RosettaCodeData/Task/Combinations/Erlang/combinations-2.erl

14 lines
413 B
Erlang

-module(comb).
-export([combinations/2]).
combinations(K, List) ->
lists:last(all_combinations(K, List)).
all_combinations(K, List) ->
lists:foldr(
fun(X, Next) ->
Sub = lists:sublist(Next, length(Next) - 1),
Step = [[]] ++ [[[X|S] || S <- L] || L <- Sub],
lists:zipwith(fun lists:append/2, Step, Next)
end, [[[]]] ++ lists:duplicate(K, []), List).