this repo has no description

Add forking to AoC 2025 solutions

hauleth.dev 8a394815 90dd84ae

verified
+5 -1
2025/day01.livemd
···
end)
```
+
<!-- livebook:{"branch_parent_index":0} -->
+
## Part 1
```elixir
···
end)
|> elem(1)
```
+
+
<!-- livebook:{"branch_parent_index":0} -->
## Part 2
···
|> elem(1)
```
-
<!-- livebook:{"offset":1234,"stamp":{"token":"XCP.CwH20tHaK8kU6dohgq36CnaY2nnD-3NQc7aO6IAmymU5SEl9dLhm1IihwzVAgdcKHOfAxiDSdAIr5aTfqXWdOCvQRqJrJVUwuKBpAhQvvj9HOgnXBEgEvZz0r_CMSDSOvw","version":2}} -->
+
<!-- livebook:{"offset":1324,"stamp":{"token":"XCP.pI2XE8mwBZJ1_5rOsosmoLh5-clSindOf0NN_piQhnU8r5baxfvJEHunCv7iXrvn3G43jfoHCFBZZK6KbxbIY0lzTJzKKWPrrl0bQ9S1RQvkk6dMv_LpnTv13HwNr3JYMw","version":2}} -->
+6 -1
2025/day02.livemd
···
|> Enum.map(&String.to_integer/1)
|> then(&apply(Range, :new, &1))
end)
+
|> Enum.sort_by(& &1.last)
```
## Implementation
···
end
```
+
<!-- livebook:{"branch_parent_index":1} -->
+
## Part 1
```elixir
···
|> Enum.sum()
```
+
<!-- livebook:{"branch_parent_index":1} -->
+
## Part 2
```elixir
···
|> Enum.sum()
```
-
<!-- livebook:{"offset":1434,"stamp":{"token":"XCP.NoAgOlNzs9jV0M8QxQDrdfMwKQR_xYkBG2FLF06XnKPtJ5ps3S83JucEVQZ7fJF0utUaryiCOT7xPWESlw3lS3TI6Jujiw8uFAZdKEXUL_jmZMHVF37TxiY4vRwKjfwvfg","version":2}} -->
+
<!-- livebook:{"offset":1551,"stamp":{"token":"XCP.GvC7N5ZC0xuQ3hRuVxd-rh5rJDKVZKJfmwspDkAuCFbjn8qdOUksP9Iy1GRtd7t5yLCV6nkfhXZlp_lTw8eZZBcwItn6IlML-jrjiORJQvkuXOHvzlOY17rIAaASRKvS3w","version":2}} -->
+6 -2
2025/day03.livemd
···
Mix.install([:kino_aoc])
```
-
## Section
+
## Parse
<!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiIzIiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} -->
···
end
```
+
<!-- livebook:{"branch_parent_index":0} -->
+
## Part 1
```elixir
Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 2)))
```
+
<!-- livebook:{"branch_parent_index":0} -->
+
## Part 2
```elixir
Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 12)))
```
-
<!-- livebook:{"offset":1124,"stamp":{"token":"XCP.c4B4LAKOm9IZipbHc85MIeUBdcwcaQptUgMJIlHzU3DD1hssADSGdE-vByW1pHXsrARIeklYPeAk8Nn3AXBYvoEjBgm8zEP9oMXmp04xI_hLHezHURvrp6zdapkG0-l_sw","version":2}} -->
+
<!-- livebook:{"offset":1212,"stamp":{"token":"XCP.fo1ohV8LylIz8VmOAj7rlJ4Jn5KPGtiiFfsDRmp0pFSXCESjhfmQ11wOwEVmq9HM-Zn8fozQDsOoJbfgbM5LJPVE9c0pw2tYKbteOOGNqHI3PTIkuBnv8ZPW6oYwWAZy4A","version":2}} -->
+10 -6
2025/day04.livemd
···
Mix.install([:kino_aoc])
```
-
## Setup
+
## Parse
<!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiI0Iiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} -->
···
```elixir
defmodule PaperRolls do
-
def adjacent({x, y}) do
+
defp adjacent({x, y}) do
for dx <- -1..1,
dy <- -1..1,
{dx, dy} != {0, 0},
do: {x + dx, y + dy}
end
-
def free?(pos, map) do
+
def movable?(pos, map) do
pos
|> adjacent()
|> Enum.count(&(&1 in map))
···
end
end
```
+
+
<!-- livebook:{"branch_parent_index":1} -->
## Part 1
```elixir
-
Enum.count(rolls, &PaperRolls.free?(&1, rolls))
+
Enum.count(rolls, &PaperRolls.movable?(&1, rolls))
```
+
+
<!-- livebook:{"branch_parent_index":1} -->
## Part 2
···
Stream.repeatedly(fn -> [] end)
|> Enum.reduce_while(rolls, fn _, acc ->
removable =
-
Enum.filter(acc, &PaperRolls.free?(&1, acc))
+
Enum.filter(acc, &PaperRolls.movable?(&1, acc))
|> MapSet.new()
case MapSet.difference(acc, removable) do
···
MapSet.size(rolls) - MapSet.size(cleaned)
```
-
<!-- livebook:{"offset":1486,"stamp":{"token":"XCP.deDYlsmx1l6_24twLKmjhZpjVr-zKpCk4kKaQFxGe1gppbfdc-7UyFIZxpcR_jVCGfX6vDlmYQ7ACpVB7bxafYi0X3Avsi-upj46ogSc5zRBoDdxStrGLSLdSmW_EsudIg","version":2}} -->
+
<!-- livebook:{"offset":1586,"stamp":{"token":"XCP.-_kcJR24r3dthl7SnpOh24JBI5hDpqMlFjQQDQ0pxtv4UHyaTlGoG4rG5iZxKtgxQoNAxw0K-mowSwehidDfrqewK3r9FHoOcAOIDbOMFd3QGH2X2Ta6KeXd4PlzWSYDBw","version":2}} -->
+10 -2
2025/day05.livemd
···
])
```
-
## Section
+
## Parse
<!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiI1Iiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} -->
···
|> Enum.map(&String.to_integer/1)
```
+
<!-- livebook:{"branch_parent_index":0} -->
+
+
## Part 1
+
```elixir
Enum.count(ingridients, & &1 in fresh)
```
+
<!-- livebook:{"branch_parent_index":0} -->
+
+
## Part 2
+
```elixir
Enum.count(fresh)
```
-
<!-- livebook:{"offset":863,"stamp":{"token":"XCP.XHMkonPfVQNZ43fIPanTNAFSPojbYWSWMU1wxn37_PPkpVpaY-fKZmAwoH-3qs2vx3CD_h34H1PjbHKDDWdrb7UxHoJoV5UxMppoorBtxw9hQF7YuznVwOa187BXPmKPcw","version":2}} -->
+
<!-- livebook:{"offset":973,"stamp":{"token":"XCP.GHEtbWlG6LHz6I0d5Y_d4738EDILulvQyP1NtPISLeYWo9atG0Ailm43-eswn0JGS5h2z5Yxb8Xi8nGJLqUkj41eqpnT_u7NxVCT4ceeKMBsd5R-EuxBw0P7vLlBab68MA","version":2}} -->
+5 -1
2025/day06.livemd
···
|> Enum.map(&String.to_atom/1)
```
+
<!-- livebook:{"branch_parent_index":0} -->
+
## Part 1
```elixir
···
{nums, :*} -> Enum.product(nums)
end)
```
+
+
<!-- livebook:{"branch_parent_index":0} -->
## Part 2
···
end)
```
-
<!-- livebook:{"offset":1229,"stamp":{"token":"XCP.uuy6Ksg23kO8DXLs0nEHWRa2q8MnTF00fl1kNBDi-xlsQ1DZ_teumvy__d8PZSNG_VIsQ9fTr1rGiHu3aFBxxeOD5uVO2plujrne43wrcKxIt7wi6AInBo9LuC1gXgwFgw","version":2}} -->
+
<!-- livebook:{"offset":1319,"stamp":{"token":"XCP.wqKPUf7KHN-UzqY1O8_n61vLL2ksAE_kGnIsQL0IpamJTD-NEX9_HbYK4H0y_NM8lKhqDz4rZ-TMFsXjuQ3n2-URGSNh_SCmDtJIbJBAP3mbiCwyN52oyGL0Nq5eD424MQ","version":2}} -->
+5 -7
2025/day07.livemd
···
end)
```
+
<!-- livebook:{"branch_parent_index":0} -->
+
## Part 1
```elixir
···
import MapSet, only: [intersection: 2, difference: 2, union: 2]
for x <- beams do
-
Image.Draw.point!(img, x, y, color: :green)
+
Image.Draw.point(img, x, y, color: :green)
end
for x <- splits do
-
Image.Draw.point!(img, x, y, color: :red)
+
Image.Draw.point(img, x, y, color: :red)
end
hits = intersection(beams, splits)
···
beams
end)
-
#for {row, y} <- Enum.with_index(splitters, 1),
-
# x <- row,
-
# do: Image.Draw.point!(img, x, y, color: :red)
-
img
end)
|> then(fn {:ok, img} -> img end)
|> Image.resize!(5, interpolate: :nearest)
```
-
<!-- livebook:{"offset":2629,"stamp":{"token":"XCP.lHomXHh84XridtwMBP5AP7BXVVCvUC-jx1w-h7SzIFygBNyHhdS1qTLyp97LGQ3Rf1f4to4IjQtJmlsi-0PrxC2vUjGg97fvP9zvt5n0IxMkwLnFfvafaIDjJSsZLX1Bcg","version":2}} -->
+
<!-- livebook:{"offset":2553,"stamp":{"token":"XCP.jUh_Ehkij-SpgOuY0sdHr5YT6IaJif0yd6mre9jiQpu7HHlbAvVeyKXHCNfcp0L0eLTRgut7HlWmzGi3AlT1SFWsJqgDuD-ePZl8JBbLYfW9j0leDSmN7-aQgVCmlMvFDw","version":2}} -->