RosettaCodeData/Task/Letter-frequency/Elixir/letter-frequency.elixir

12 lines
453 B
Plaintext

file = hd(System.argv)
case File.read(file) do
{:ok, binary} -> String.upcase(binary)
|> String.codepoints
|> Enum.filter(fn c -> c =~ ~r/[A-Z]/ end)
|> Enum.reduce(Map.new, fn c,acc -> Dict.update(acc, c, 1, &(&1+1)) end)
|> Enum.sort_by(fn {_k,v} -> -v end)
|> Enum.each(fn {k,v} -> IO.puts "#{k} #{v}" end)
{:error, reason} -> IO.inspect reason
end