24 lines
593 B
Elixir
24 lines
593 B
Elixir
defmodule FlattenArray do
|
|
@doc """
|
|
Accept a list and return the list flattened without nil values.
|
|
|
|
## Examples
|
|
|
|
iex> FlattenArray.flatten([1, [2], 3, nil])
|
|
[1,2,3]
|
|
|
|
iex> FlattenArray.flatten([nil, nil])
|
|
[]
|
|
|
|
"""
|
|
@spec flatten(list) :: list
|
|
def flatten(list) do
|
|
flat(list, [])
|
|
end
|
|
|
|
defp flat([], rest), do: rest
|
|
defp flat([head | tail], rest) when is_list(head), do: flat(tail, rest ++ flat(head, []))
|
|
defp flat([head | tail], rest) when is_nil(head), do: flat(tail, rest)
|
|
defp flat([head | tail], rest), do: flat(tail, rest ++ [head])
|
|
end
|