22 lines
361 B
Plaintext
22 lines
361 B
Plaintext
let comb m xs =
|
|
let xs = Array.of_list xs in
|
|
|
|
if m > Array.length xs then
|
|
[]
|
|
else begin
|
|
|
|
let arr = Array.make (m+1) [] in
|
|
arr.(0) <- [[]];
|
|
|
|
for j = 0 to Array.length xs - m do
|
|
for i = 1 to m do
|
|
arr.(i) <- arr.(i) @ List.map (fun ys -> xs.(j+i-1)::ys) arr.(i-1)
|
|
done
|
|
done;
|
|
|
|
arr.(m)
|
|
|
|
end
|
|
;;
|
|
comb 3 [0;1;2;3;4];;
|