15 lines
461 B
Plaintext
15 lines
461 B
Plaintext
procedure power_set (s)
|
|
result := set ()
|
|
if *s = 0
|
|
then insert (result, set ()) # empty set
|
|
else {
|
|
head := set(?s) # take a random element
|
|
# and find powerset of remaining part of set
|
|
tail_pset := power_set (x -- head)
|
|
result ++:= tail_pset # add powerset of remainder to results
|
|
every ps := !tail_pset do # and add head to each powerset from the remainder
|
|
insert (result, ps ++ head)
|
|
}
|
|
return result
|
|
end
|