45 lines
1.2 KiB
Text
45 lines
1.2 KiB
Text
[ stack ] is (ps).stack
|
|
[ stack ] is (ps).items
|
|
[ stack ] is (ps).result
|
|
|
|
[ 1 - (ps).items put
|
|
0 (ps).stack put
|
|
[] (ps).result put
|
|
[ (ps).result take
|
|
(ps).stack behead
|
|
drop nested join
|
|
(ps).result put
|
|
(ps).stack take
|
|
dup (ps).items share
|
|
= iff
|
|
[ drop
|
|
(ps).stack size 1 > iff
|
|
[ 1 (ps).stack tally ] ]
|
|
else
|
|
[ dup (ps).stack put
|
|
1+ (ps).stack put ]
|
|
(ps).stack size 1 = until ]
|
|
(ps).items release
|
|
(ps).result take ] is (ps) ( n --> )
|
|
|
|
[ dup size dip
|
|
[ witheach
|
|
[ over swap peek swap ] ]
|
|
nip pack ] is arrange ( [ [ --> [ )
|
|
|
|
[ dup [] = iff
|
|
nested done
|
|
dup size (ps)
|
|
' [ [ ] ] swap join
|
|
[] unrot witheach
|
|
[ dip dup arrange
|
|
nested
|
|
rot swap join swap ]
|
|
drop ] is powerset ( [ --> [ )
|
|
|
|
' [ [ 1 2 3 4 ] [ ] [ [ ] ] ]
|
|
witheach
|
|
[ say "The powerset of "
|
|
dup echo cr
|
|
powerset witheach [ echo cr ]
|
|
cr ]
|