Advent of code day 00
Mix.install([
{:kino, "~> 0.5.0"}
])
Setup input
example = Kino.Input.textarea("Please paste your input example:")
input = Kino.Input.textarea("Please paste your real input:")
Setup
numbers =
example
|> Kino.Input.read()
|> String.split(",", trim: true)
|> Enum.map(&String.to_integer/1)
{min, max} = Enum.min_max(numbers)
Part 01
min..max
|> Enum.map(fn position ->
Enum.reduce(numbers, 0, fn el, total_fuel ->
abs(position - el)
|> Kernel.+(total_fuel)
end)
end)
|> Enum.min()
Part 02
min..max
|> Enum.map(fn position ->
Enum.reduce(numbers, 0, fn el, total_fuel ->
diff = abs(position - el)
div(diff * (diff + 1), 2) + total_fuel
end)
end)
|> Enum.min()