Power set: Difference between revisions

Content added Content deleted
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, one per line*/
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; bbase= base - y
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)
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 powerset chunk.*/
return strip($) /*return with a partial power set chunk*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
.combU: procedure expose !. y bbase; parse arg d; if d==0 then return 1
.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
do u=d to y; !.u= p + 1; if !.u==bbase+u then return .combU(u-1)
if !.u==bbase+u then return .combU(u-1)
p= !.u
p= !.u
end /*u*/
end /*u*/
return 0</lang>
return 0</lang>
{{out|output|text=&nbsp; when using the default input:}}
{{out|output|text=&nbsp; when using the default input:}}