RosettaCodeData/Task/Averages-Mode/Elixir/averages-mode.elixir

15 lines
419 B
Plaintext

defmodule Average do
def mode(list) do
gb = Enum.group_by(list, &(&1))
max = Enum.map(gb, fn {_,val} -> length(val) end) |> Enum.max
for {key,val} <- gb, length(val)==max, do: key
end
end
lists = [[3,1,4,1,5,9,2,6,5,3,5,8,9],
[1, 2, "qwe", "asd", 1, 2, "qwe", "asd", 2, "qwe"]]
Enum.each(lists, fn list ->
IO.puts "mode: #{inspect list}"
IO.puts " => #{inspect Average.mode(list)}"
end)