14 lines
413 B
Erlang
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).
|