Ich habe in den letzten Wochen mit Elixir gebastelt. Ich bin gerade auf diese knappe combinations algorithm in Erlang gestoßen, die ich in Elixir umgeschrieben habe, aber stecken geblieben bin.Wie Erlang Kombinationen Algorithmus in Elixir umschreiben?
Erlang Version:
comb(0,_) ->
[[]];
comb(_,[]) ->
[];
comb(N,[H|T]) ->
[[H|L] || L <- comb(N-1,T)]++comb(N,T).
Elixir Version kam ich mit diesem, aber es ist nicht korrekt:
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
Beispiel für die Verwendung mit falschen Ergebnissen:
iex> combination(2, [1,2,3])
[[1, 2, [3], [2, 3]]]
Alle Hinweise was mache ich falsch?
Danke!
Sean
Excellent! Vielen Dank. :) – seanomlor