Day 7
input =
File.read!("day7.txt")
|> String.trim()
|> String.split(",")
|> Enum.map(&String.to_integer/1)
[1101, 1, 29, 67, 1102, 0, 1, 65, 1008, 65, 35, 66, 1005, 66, 28, 1, 67, 65, 20, 4, 0, 1001, 65, 1,
65, 1106, 0, 8, 99, 35, 67, 101, 99, 105, 32, 110, 39, 101, 115, 116, 32, 112, 97, 115, 32, 117,
110, 101, 32, 105, ...]
Task 1
median = Enum.at(Enum.sort(input), div(length(input), 2))
input
|> Enum.map(&abs(&1 - median))
|> Enum.sum()
336721
Task 2
arith_sum = fn n -> div(n * n + n, 2) end
max = Enum.max(input)
mean = Enum.sum(input) / length(input)
[floor(mean), ceil(mean)]
|> Enum.map(fn n ->
input
|> Enum.map(&arith_sum.(abs(&1 - n)))
|> Enum.sum()
end)
|> Enum.min()
91638945