Power set: Difference between revisions

m
→‎{{header|REXX}}: added/changed whitespace and comments, split a compound statement.
(Add APL)
m (→‎{{header|REXX}}: added/changed whitespace and comments, split a compound statement.)
Line 3,362:
say right(k, w) word(@, k) /*display a single combination to term.*/
end /*k*/
exit 0 /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
combN: procedure expose S; parse arg x,y; base= x + 1; bbase= base - y
!.= 0
do p=1 for y; !.p= p
end /*p*/
$= /* [↓] build powerset*/
$=
do j=1; L=; do d=1 for y; L= L','word(S, !.d)
do d=1 for y; L= L','word(S, end /*!.d*/)
$=$ '{'strip(L, "L", ',')"}";end !.y= !.y + 1/*d*/
if !.y$==base $ then if .combU'{'strip(yL, -"L", 1',')"}"; then leave !.y= !.y + 1
end if !.y==base /*j*/ then if .combU(y - 1) then leave
end /*j*/
return strip($) /*return with a partial power set chunk*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
Line 3,379 ⟶ 3,380:
p= !.d
do u=d to y; !.u= p + 1; if !.u==bbase+u then return .combU(u-1)
p= !.u /* ↑ */
end /*u*/ /*recurse──►───┘ */
return 0</lang>
{{out|output|text=&nbsp; when using the default input:}}