Power set: Difference between revisions
Content added Content deleted
m (→Non-recursive version: Fix syntax) |
m (→{{header|REXX}}: added/changed whitespace and comments.) |
||
Line 3,280: | Line 3,280: | ||
end /*chunk*/ |
end /*chunk*/ |
||
w= length(2**N) /*the number of items in the power set.*/ |
w= length(2**N) /*the number of items in the power set.*/ |
||
do k=1 for words(@) /* [↓] show combinations, |
do k=1 for words(@) /* [↓] show combinations, 1 per line.*/ |
||
say right(k, w) word(@, k) /*display a single combination to term.*/ |
say right(k, w) word(@, k) /*display a single combination to term.*/ |
||
end /*k*/ |
end /*k*/ |
||
exit /*stick a fork in it, we're all done. */ |
exit /*stick a fork in it, we're all done. */ |
||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
||
combN: procedure expose S; parse arg x,y; base= x + 1; |
combN: procedure expose S; parse arg x,y; base= x + 1; bbase= base - y |
||
!.= 0 |
!.= 0 |
||
do p=1 for y; !.p= p |
do p=1 for y; !.p= p |
||
end /*p*/ |
end /*p*/ |
||
$= |
$= |
||
do j=1; L= |
do j=1; L=; do d=1 for y; L= L','word(S, !.d) |
||
end /*d*/ |
|||
end /*d*/ |
|||
$=$ '{'strip(L, "L", ',')"}"; !.y= !.y + 1 |
$=$ '{'strip(L, "L", ',')"}"; !.y= !.y + 1 |
||
if !.y==base then if .combU(y - 1) then leave |
if !.y==base then if .combU(y - 1) then leave |
||
end /*j*/ |
end /*j*/ |
||
return strip($) /*return with a partial |
return strip($) /*return with a partial power set chunk*/ |
||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
||
.combU: procedure expose !. y bbase; |
.combU: procedure expose !. y bbase; parse arg d; if d==0 then return 1 |
||
p= !.d |
p= !.d |
||
do u=d to y; !.u= p + 1; if !.u==bbase+u then return .combU(u-1) |
|||
p= !.u |
|||
end /*u*/ |
|||
end /*u*/ |
|||
return 0</lang> |
return 0</lang> |
||
{{out|output|text= when using the default input:}} |
{{out|output|text= when using the default input:}} |