33 lines
847 B
Elixir
33 lines
847 B
Elixir
defmodule ListHelper do
|
|
def list_len(list) do
|
|
list_len_helper(0, list)
|
|
end
|
|
|
|
defp list_len_helper(current_len, []), do: current_len
|
|
|
|
defp list_len_helper(current_len, [_ | tail]) do
|
|
list_len_helper(current_len + 1, tail)
|
|
end
|
|
|
|
def range(num1, num2), do: range_helper([], num1, num2)
|
|
|
|
defp range_helper(current_list, num, num), do: [num | current_list]
|
|
|
|
defp range_helper(current_list, num1, num2) do
|
|
range_helper([num2 | current_list], num1, num2 - 1)
|
|
end
|
|
|
|
def positive(list) do
|
|
Enum.reverse(positive_helper([], list))
|
|
end
|
|
|
|
defp positive_helper(current_list, []), do: current_list
|
|
|
|
defp positive_helper(current_list, [head | tail]) when head > 0 do
|
|
positive_helper([head | current_list], tail)
|
|
end
|
|
|
|
defp positive_helper(current_list, [_ | tail]) do
|
|
positive_helper(current_list, tail)
|
|
end
|
|
end
|