RosettaCodeData/Task/Combinations/Phix/combinations.phix

14 lines
449 B
Plaintext

procedure comb(integer pool, needed, done=0, sequence chosen={})
if needed=0 then -- got a full set
?chosen -- (or use a routine_id, result arg, or whatever)
return
end if
if done+needed>pool then return end if -- cannot fulfil
-- get all combinations with and without the next item:
done += 1
comb(pool,needed-1,done,append(chosen,done))
comb(pool,needed,done,chosen)
end procedure
comb(5,3)