RosettaCodeData/Task/Power-set/Icon/power-set-1.icon
Ingy döt Net b83f433714 tasks a-s
2013-04-10 23:57:08 -07:00

14 lines
461 B
Text

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