Power set: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
(Added Wren) |
||
Line 4,274: | Line 4,274: | ||
{{out}} |
{{out}} |
||
<pre>{{},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3},{4},{1,4},{2,4},{1,2,4},{3,4},{1,3,4},{2,3,4},{1,2,3,4}}</pre> |
<pre>{{},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3},{4},{1,4},{2,4},{1,2,4},{3,4},{1,3,4},{2,3,4},{1,2,3,4}}</pre> |
||
=={{header|Wren}}== |
|||
Although we have a module for sets, they are based on maps whose keys must be value types. This means that sets of sets are technically impossible because set elements are not value types. |
|||
We therefore use lists to represent sets which works fine here. |
|||
<lang ecmascript>var powerset // recursive |
|||
powerset = Fn.new { |set| |
|||
if (set.count == 0) return [[]] |
|||
var head = set[0] |
|||
var tail = set[1..-1] |
|||
return powerset.call(tail) + powerset.call(tail).map { |s| [head] + s } |
|||
} |
|||
var sets = [ [1, 2, 3, 4], [], [[]] ] |
|||
for (set in sets) { |
|||
System.print("The power set of %(set) is:") |
|||
System.print(powerset.call(set)) |
|||
System.print() |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
The power set of [1, 2, 3, 4] is: |
|||
[[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]] |
|||
The power set of [] is: |
|||
[[]] |
|||
The power set of [[]] is: |
|||
[[], [[]]] |
|||
</pre> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |