Power set: Difference between revisions
Content added Content deleted
Line 2,325: | Line 2,325: | ||
b c d |
b c d |
||
a b c d</pre> |
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}}== |
=={{header|PHP}}== |