Power set: Difference between revisions

832 bytes added ,  10 years ago
Added zkl
(Added zkl)
Line 2,599:
linrec].
</lang>
 
=={{header|zkl}}==
Using a combinations function, build the power set from combinations of 1,2,... items.
<lang zkl>fcn pwerSet(list){
(0).pump(list.len(),List,Utils.Helpers.pickNFrom.fp1(list))
.flatten().append(list)
}</lang>
Same thing, but build a single list result to avoid having to post flatten.
<lang zkl>fcn pwerSet(list){
(0).pump(list.len(),List,'wrap(n){
T(Void.Write,Void.Write,Utils.Helpers.pickNFrom(n,list))})
.append(list)
}</lang>
{{out}}
<pre>
foreach n in (5){
ps:=pwerSet2((1).pump(n,List)); ps.println(" Size = ",ps.len());
}
L(L()) Size = 1
L(L(),L(1)) Size = 2
L(L(),L(1),L(2),L(1,2)) Size = 4
L(L(),L(1),L(2),L(3),L(1,2),L(1,3),L(2,3),L(1,2,3)) Size = 8
L(L(),L(1),L(2),L(3),L(4),L(1,2),L(1,3),L(1,4),L(2,3),L(2,4),
L(3,4),L(1,2,3),L(1,2,4),L(1,3,4),L(2,3,4),L(1,2,3,4)) Size = 16
</pre>
 
 
{{omit from|GUISS}}
Anonymous user