aoc2024/day01.livemd

44 lines
622 B
Markdown

# Day01
```elixir
Mix.install([
{:kino, "~> 0.14.2"},
{:decimal, "~> 2.2"}
])
```
## Section
```elixir
input = Kino.Input.textarea("Input")
```
```elixir
input =
input
|> Kino.Input.read
|> String.split("\n")
|> Enum.map(fn l -> String.split(l, " ") end)
|> List.foldl([[],[]], fn [x, y], [xa, ya] ->
[[String.to_integer(x)| xa], [String.to_integer(y)| ya]]
end)
```
```elixir
input
|> Enum.map(&Enum.sort/1)
|> Enum.zip
|> Enum.map(fn {x,y} -> abs(x - y) end)
|> Enum.sum
```
```elixir
[x, y] = input
f = Enum.frequencies(y)
x
|> Enum.map(fn xx -> xx * (f[xx] || 0) end)
|> Enum.sum
```