2016 Update

This commit is contained in:
Tina Müller 2016-12-05 22:15:40 +01:00
parent 948b86eafa
commit dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions

View file

@ -2,21 +2,21 @@ defmodule RC do
def range_extract(list) do
max = Enum.max(list) + 2
sorted = Enum.sort([max|list])
canidate_number = hd(sorted)
candidate_number = hd(sorted)
current_number = hd(sorted)
extract(tl(sorted), canidate_number, current_number, [])
extract(tl(sorted), candidate_number, current_number, [])
end
defp extract([], _, _, range), do: Enum.reverse(range) |> Enum.join(",")
defp extract([next|rest], canidate, current, range) when current+1 >= next do
extract(rest, canidate, next, range)
defp extract([next|rest], candidate, current, range) when current+1 >= next do
extract(rest, candidate, next, range)
end
defp extract([next|rest], canidate, current, range) when canidate == current do
defp extract([next|rest], candidate, current, range) when candidate == current do
extract(rest, next, next, [to_string(current)|range])
end
defp extract([next|rest], canidate, current, range) do
seperator = if canidate+1 == current, do: ",", else: "-"
str = "#{canidate}#{seperator}#{current}"
defp extract([next|rest], candidate, current, range) do
separator = if candidate+1 == current, do: ",", else: "-"
str = "#{candidate}#{separator}#{current}"
extract(rest, next, next, [str|range])
end
end