this repo has no description

2024 day 01

hauleth.dev dff434f3 8181ca71

verified
Changed files
+49
2024
+49
2024/day01.livemd
···
+
# Day 01
+
+
```elixir
+
Mix.install([:kino_aoc])
+
```
+
+
## Section
+
+
<!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiIxIiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjQifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} -->
+
+
```elixir
+
{:ok, puzzle_input} =
+
KinoAOC.download_puzzle("2024", "1", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION"))
+
```
+
+
```elixir
+
{left, right} =
+
puzzle_input
+
|> String.split("\n", trim: true)
+
|> Enum.map(fn line ->
+
line
+
|> String.split(" ", trim: true)
+
|> Enum.map(&String.to_integer/1)
+
|> List.to_tuple()
+
end)
+
|> Enum.unzip()
+
```
+
+
## Part 1
+
+
```elixir
+
left
+
|> Enum.sort()
+
|> Enum.zip_with(Enum.sort(right), &abs(&1 - &2))
+
|> Enum.sum()
+
```
+
+
## Part 2
+
+
```elixir
+
freq_left = Enum.frequencies(left)
+
freq_right = Enum.frequencies(right)
+
+
freq_left
+
|> Enum.map(fn {id, n} -> id * n * Map.get(freq_right, id, 0) end)
+
|> Enum.sum()
+
```
+
+
<!-- livebook:{"offset":946,"stamp":{"token":"XCP.yoOGtjwRQqzJzwUJIU8whgzKrfM5itcWL9AJcWUmjQHyohqeB9F_WH6pTqnTtTm4QERP5feEfLn6Vkjen95d23tI3VO-e9goRMqIc5jshNWfH59tFX7lzO2M7QPQ28nKicI","version":2}} -->