【发布时间】:2020-01-10 09:32:45
【问题描述】:
我正在努力在 Elixir 中创建一个集合的排列。
Permuate([1,2,3])
[[1, 2, 3], [1, 3, 2], [2, 3, 1], [2, 1, 3], [3, 2, 1], [3, 1, 2]]
但是,我提出的每次尝试都以一些类似的版本结束:
[[2, [3, [1]], [1, [3]]], [3, [2, [1]], [1, [2]]], [1, [2, [3]], [3, [2]]]]
或
[[[2, [[3, 1]]], [2, [[1, 3]]]], [[3, [[2, 1]]], [3, [[1, 2]]]],
[[1, [[2, 3]]], [1, [[3, 2]]]]]
几乎就在那里.. 只是需要一些关于使用 Elixir 构建列表的启示。
我的代码如下所示:
defmodule Permutations do
def permutate_set(s) do
if Set.size(s) == 1 do
Set.to_list(s)
else
Enum.map(s, fn(a) ->
Enum.map(permutate_set(Set.delete(s, a)), fn(b) ->
[a] ++ [b]
end)
end)
end
end
end
【问题讨论】:
标签: elixir