16 lines
463 B
Text
16 lines
463 B
Text
defmodule Average do
|
|
def median([]), do: nil
|
|
def median(list) do
|
|
len = length(list)
|
|
sorted = Enum.sort(list)
|
|
mid = div(len, 2)
|
|
if rem(len,2) == 0, do: (Enum.at(sorted, mid-1) + Enum.at(sorted, mid)) / 2,
|
|
else: Enum.at(sorted, mid)
|
|
end
|
|
end
|
|
|
|
median = fn list -> IO.puts "#{inspect list} => #{inspect Average.median(list)}" end
|
|
median.([])
|
|
Enum.each(1..6, fn i ->
|
|
(for _ <- 1..i, do: :rand.uniform(6)) |> median.()
|
|
end)
|