Как переписать алгоритм комбинаций Эрланга в Elixir?
Я возился с Эликсиром последние несколько недель. Я только что натолкнулся на это краткоеАлгоритм комбинаций в Эрланге, который я пытался переписать в эликсире, но застрял.
Erlang версия:
comb(0,_) ->
[[]];
comb(_,[]) ->
[];
comb(N,[H|T]) ->
[[H|L] || L <- comb(N-1,T)]++comb(N,T).
Эликсир версия, я придумал это, но это не правильно:
def combination(0, _), do: [[]]
def combination(_, []), do: []
def combination(n, [x|xs]) do
for y <- combination(n - 1, xs), do: [x|y] ++ combination(n, xs)
end
Пример использования, с неверными результатами:
iex> combination(2, [1,2,3])
[[1, 2, [3], [2, 3]]]
Есть указания на то, что я делаю не так?
Спасибо!
Шон