11
Tôi đã lén lút với Elixir trong vài tuần qua. Tôi vừa mới xem qua số combinations algorithm in Erlang ngắn gọn này, mà tôi đã thử viết lại ở Elixir nhưng bị kẹt.Làm thế nào để viết lại thuật toán kết hợp Erlang trong Elixir?
Erlang phiên bản:
comb(0,_) ->
[[]];
comb(_,[]) ->
[];
comb(N,[H|T]) ->
[[H|L] || L <- comb(N-1,T)]++comb(N,T).
phiên bản Elixir tôi đã đưa ra với điều này, nhưng nó không phải là chính xác:
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
Ví dụ sử dụng, với kết quả không chính xác:
iex> combination(2, [1,2,3])
[[1, 2, [3], [2, 3]]]
Bất kỳ con trỏ về những gì tôi đang làm sai?
Cảm ơn!
Sean
Tuyệt vời! Cảm ơn bạn. :) – seanomlor