What I really want is the list of all sublists, e.g. [1,2,3] returns [[1],[2],[3],[1,2],[1,3],[2,3]]
I’m struggling with logic that would expand to an arbitrarily sized list.
defmodule ListOfSublists do
def combinations(list) do
chunk_to_sublist(list, length(list))
end
defp chunk_to_sublist(list, length) do
do_chunk_to_sublist(list, 1, length, [])
end
defp do_chunk_to_sublist(_list, length, length, sublists) do
sublists
end
defp do_chunk_to_sublist(list, count, length, sublists) do
sublists_for_count = Enum.chunk_every(list, count, 1)
do_chunk_to_sublist(list, count + 1, length, sublists ++ sublists_for_count)
end
end