Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
23
Task/Set-consolidation/Elixir/set-consolidation.elixir
Normal file
23
Task/Set-consolidation/Elixir/set-consolidation.elixir
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
defmodule RC do
|
||||
def set_consolidate(sets, result\\[])
|
||||
def set_consolidate([], result), do: result
|
||||
def set_consolidate([h|t], result) do
|
||||
case Enum.find(t, fn set -> not MapSet.disjoint?(h, set) end) do
|
||||
nil -> set_consolidate(t, [h | result])
|
||||
set -> set_consolidate([MapSet.union(h, set) | t -- [set]], result)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
examples = [[[:A,:B], [:C,:D]],
|
||||
[[:A,:B], [:B,:D]],
|
||||
[[:A,:B], [:C,:D], [:D,:B]],
|
||||
[[:H,:I,:K], [:A,:B], [:C,:D], [:D,:B], [:F,:G,:H]]]
|
||||
|> Enum.map(fn sets ->
|
||||
Enum.map(sets, fn set -> MapSet.new(set) end)
|
||||
end)
|
||||
|
||||
Enum.each(examples, fn sets ->
|
||||
IO.write "#{inspect sets} =>\n\t"
|
||||
IO.inspect RC.set_consolidate(sets)
|
||||
end)
|
||||
Loading…
Add table
Add a link
Reference in a new issue