34 lines
678 B
Plaintext
34 lines
678 B
Plaintext
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)
|