DEV Community

Discussion on: Daily Challenge #210 - Separate Capitalization

Collapse
 
savagepixie profile image
SavagePixie • Edited

I'm a bit late to the party, but here's my Elixir solution:

defmodule Letters do
  import Integer, only: [ is_even: 1, is_odd: 1 ]

  def capitalise(str) do
    str
      |> String.split("", trim: true)
      |> Enum.with_index
      |> Enum.map(&_mapper/1)
      |> Enum.unzip
      |> _join
  end

  defp _mapper({ letter, idx })
    when is_even(idx) do
      { String.capitalize(letter), String.downcase(letter) }
    end
  defp _mapper({ letter, idx })
    when is_odd(idx) do
      { String.downcase(letter), String.capitalize(letter) }
    end
  defp _join({ a, b }), do: { Enum.join(a), Enum.join(b) }
end