RosettaCodeData/Task/Combinations/Lambdatalk/combinations.lambdatalk

19 lines
443 B
Plaintext

{def comb
{def comb.r
{lambda {:m :n :N}
{if {= :m 0}
then {A.new {A.new}}
else {if {= :n :N}
then {A.new}
else {A.concat
{A.map {{lambda {:n :rest} {A.addfirst! :n :rest}} :n}
{comb.r {- :m 1} {+ :n 1} :N}}
{comb.r :m {+ :n 1} :N}}}}}}
{lambda {:m :n}
{comb.r :m 0 :n}}}
-> comb
{comb 3 5}
-> [[0,1,2],[0,1,3],[0,1,4],[0,2,3],[0,2,4],[0,3,4],
[1,2,3],[1,2,4],[1,3,4],[2,3,4]]