Averages/Median: Difference between revisions

Content added Content deleted
m (added whitespace to the task's preamble.)
(→‎{{header|Elixir}}: removed unnecessary division.)
Line 783: Line 783:
def median([]), do: nil
def median([]), do: nil
def median(list) do
def median(list) do
len = Enum.count(list)
len = length(list)
sorted = Enum.sort(list)
sorted = Enum.sort(list)
mid = div(len, 2)
mid = div(len, 2)
if rem(len,2) == 0, do: (Enum.at(sorted, mid-1) + Enum.at(sorted, mid)) / 2,
rem = rem(len, 2)
(Enum.at(sorted, mid) + Enum.at(sorted, mid + rem - 1)) / 2
else: Enum.at(sorted, mid)
end
end
end
end

median = fn list -> IO.puts "#{inspect list} => #{inspect Average.median(list)}" end
median = fn list -> IO.puts "#{inspect list} => #{inspect Average.median(list)}" end
median.([])
median.([])
Line 800: Line 800:
<pre>
<pre>
[] => nil
[] => nil
[1] => 1.0
[4] => 4
[4, 5] => 4.5
[1, 6] => 3.5
[4, 1, 3] => 3.0
[5, 2, 4] => 4
[6, 5, 2, 1] => 3.5
[2, 3, 5, 1] => 2.5
[5, 5, 4, 1, 2] => 4.0
[3, 2, 6, 3, 2] => 3
[2, 6, 4, 1, 3, 2] => 2.5
[6, 4, 2, 3, 1, 3] => 3.0
</pre>
</pre>