Day 07
Setup
Mix.install([
{:kino, "~> 0.4.1"}
])
input = Kino.Input.text("Please enter your Input")
line =
input
|> Kino.Input.read()
|> String.split(",", trim: true)
|> Enum.map(&String.to_integer/1)
Part 1
{min, max} = Enum.min_max(line)
min..max
|> Enum.map(fn i ->
Enum.map(line, fn j -> abs(j - i) end) |> Enum.sum()
end)
|> Enum.min()
Part 2
n = Enum.sum(line) / length(line)
floor(n)..ceil(n)
|> Enum.map(fn i ->
line
|> Enum.map(fn j ->
n = abs(j - i)
n * (n + 1) / 2
end)
|> Enum.sum()
end)
|> Enum.min()
|> Kernel.trunc()
Fun
Kino.animate(300, true, fn
true ->
{:cont,
Kino.Markdown.new(~S"""
```
(\/) (°,,,,°) (||)
```
"""), false}
false ->
{:cont,
Kino.Markdown.new(~S"""
```
(||) (°,,,,°) (\/)
```
"""), true}
end)