Use Livebook to open this notebook and explore new ideas.
It is easy to get started, on your machine or the cloud.
<!-- livebook:{"file_entries":[{"name":"example_input.txt","type":"attachment"},{"name":"input.txt","type":"attachment"}]} -->
# Day 1
```elixir
Mix.install([
{:kino, "~> 0.14.2"}
])
```
## Part 1
```elixir
input = Kino.FS.file_path("input.txt") |> File.read!()
```
```elixir
interspersed_lists = String.trim(input)
|> String.split("\n")
|> Enum.flat_map(fn pairs -> String.split(pairs) end)
|> Enum.map(fn val -> String.to_integer(val) end)
```
```elixir
{sorted_a, sorted_b} = {
Enum.take_every(interspersed_lists, 2) |> Enum.sort(),
Enum.drop_every(interspersed_lists, 2) |> Enum.sort()
}
```
```elixir
diff = Enum.zip([sorted_a, sorted_b])
|> Enum.map(fn {a, b} -> abs(a - b) end)
|> Enum.sum()
```
## Part 2
```elixir
frequencies = Enum.frequencies(sorted_b)
sum = Enum.map(sorted_a, fn elem -> elem * Map.get(frequencies, elem, 0) end)
|> Enum.sum()
```
See source