Power set: Difference between revisions

Line 2,325:
b c d
a b c d</pre>
 
=={{header|Phix}}==
<lang Phix>sequence powerset
integer step = 1
 
function pst(object key, object /*data*/, object /*user_data*/)
integer k = 1
while k<length(powerset) do
k += step
for j=1 to step do
powerset[k] = append(powerset[k],key)
k += 1
end for
end while
step *= 2
return 1
end function
 
function power_set(integer d)
powerset = repeat({},power(2,dict_size(d)))
step = 1
traverse_dict(routine_id("pst"),0,d)
return powerset
end function
 
integer d1234 = new_dict()
setd(1,0,d1234)
setd(2,0,d1234)
setd(3,0,d1234)
setd(4,0,d1234)
?power_set(d1234)
integer d0 = new_dict()
?power_set(d0)
setd({},0,d0)
?power_set(d0)</lang>
{{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>
 
=={{header|PHP}}==
7,820

edits