this repo has no description

Add forking to AoC 2025 solutions

hauleth.dev 8a394815 90dd84ae

verified
+47 -20
+5 -1
2025/day01.livemd
··· 28 end) 29 ``` 30 31 ## Part 1 32 33 ```elixir ··· 38 end) 39 |> elem(1) 40 ``` 41 42 ## Part 2 43 ··· 62 |> elem(1) 63 ``` 64 65 - <!-- livebook:{"offset":1234,"stamp":{"token":"XCP.CwH20tHaK8kU6dohgq36CnaY2nnD-3NQc7aO6IAmymU5SEl9dLhm1IihwzVAgdcKHOfAxiDSdAIr5aTfqXWdOCvQRqJrJVUwuKBpAhQvvj9HOgnXBEgEvZz0r_CMSDSOvw","version":2}} -->
··· 28 end) 29 ``` 30 31 + <!-- livebook:{"branch_parent_index":0} --> 32 + 33 ## Part 1 34 35 ```elixir ··· 40 end) 41 |> elem(1) 42 ``` 43 + 44 + <!-- livebook:{"branch_parent_index":0} --> 45 46 ## Part 2 47 ··· 66 |> elem(1) 67 ``` 68 69 + <!-- livebook:{"offset":1324,"stamp":{"token":"XCP.pI2XE8mwBZJ1_5rOsosmoLh5-clSindOf0NN_piQhnU8r5baxfvJEHunCv7iXrvn3G43jfoHCFBZZK6KbxbIY0lzTJzKKWPrrl0bQ9S1RQvkk6dMv_LpnTv13HwNr3JYMw","version":2}} -->
+6 -1
2025/day02.livemd
··· 24 |> Enum.map(&String.to_integer/1) 25 |> then(&apply(Range, :new, &1)) 26 end) 27 ``` 28 29 ## Implementation ··· 59 end 60 ``` 61 62 ## Part 1 63 64 ```elixir ··· 68 |> Enum.sum() 69 ``` 70 71 ## Part 2 72 73 ```elixir ··· 77 |> Enum.sum() 78 ``` 79 80 - <!-- livebook:{"offset":1434,"stamp":{"token":"XCP.NoAgOlNzs9jV0M8QxQDrdfMwKQR_xYkBG2FLF06XnKPtJ5ps3S83JucEVQZ7fJF0utUaryiCOT7xPWESlw3lS3TI6Jujiw8uFAZdKEXUL_jmZMHVF37TxiY4vRwKjfwvfg","version":2}} -->
··· 24 |> Enum.map(&String.to_integer/1) 25 |> then(&apply(Range, :new, &1)) 26 end) 27 + |> Enum.sort_by(& &1.last) 28 ``` 29 30 ## Implementation ··· 60 end 61 ``` 62 63 + <!-- livebook:{"branch_parent_index":1} --> 64 + 65 ## Part 1 66 67 ```elixir ··· 71 |> Enum.sum() 72 ``` 73 74 + <!-- livebook:{"branch_parent_index":1} --> 75 + 76 ## Part 2 77 78 ```elixir ··· 82 |> Enum.sum() 83 ``` 84 85 + <!-- livebook:{"offset":1551,"stamp":{"token":"XCP.GvC7N5ZC0xuQ3hRuVxd-rh5rJDKVZKJfmwspDkAuCFbjn8qdOUksP9Iy1GRtd7t5yLCV6nkfhXZlp_lTw8eZZBcwItn6IlML-jrjiORJQvkuXOHvzlOY17rIAaASRKvS3w","version":2}} -->
+6 -2
2025/day03.livemd
··· 4 Mix.install([:kino_aoc]) 5 ``` 6 7 - ## Section 8 9 <!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiIzIiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 10 ··· 37 end 38 ``` 39 40 ## Part 1 41 42 ```elixir 43 Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 2))) 44 ``` 45 46 ## Part 2 47 48 ```elixir 49 Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 12))) 50 ``` 51 52 - <!-- livebook:{"offset":1124,"stamp":{"token":"XCP.c4B4LAKOm9IZipbHc85MIeUBdcwcaQptUgMJIlHzU3DD1hssADSGdE-vByW1pHXsrARIeklYPeAk8Nn3AXBYvoEjBgm8zEP9oMXmp04xI_hLHezHURvrp6zdapkG0-l_sw","version":2}} -->
··· 4 Mix.install([:kino_aoc]) 5 ``` 6 7 + ## Parse 8 9 <!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiIzIiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 10 ··· 37 end 38 ``` 39 40 + <!-- livebook:{"branch_parent_index":0} --> 41 + 42 ## Part 1 43 44 ```elixir 45 Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 2))) 46 ``` 47 48 + <!-- livebook:{"branch_parent_index":0} --> 49 + 50 ## Part 2 51 52 ```elixir 53 Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 12))) 54 ``` 55 56 + <!-- livebook:{"offset":1212,"stamp":{"token":"XCP.fo1ohV8LylIz8VmOAj7rlJ4Jn5KPGtiiFfsDRmp0pFSXCESjhfmQ11wOwEVmq9HM-Zn8fozQDsOoJbfgbM5LJPVE9c0pw2tYKbteOOGNqHI3PTIkuBnv8ZPW6oYwWAZy4A","version":2}} -->
+10 -6
2025/day04.livemd
··· 4 Mix.install([:kino_aoc]) 5 ``` 6 7 - ## Setup 8 9 <!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiI0Iiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 10 ··· 32 33 ```elixir 34 defmodule PaperRolls do 35 - def adjacent({x, y}) do 36 for dx <- -1..1, 37 dy <- -1..1, 38 {dx, dy} != {0, 0}, 39 do: {x + dx, y + dy} 40 end 41 42 - def free?(pos, map) do 43 pos 44 |> adjacent() 45 |> Enum.count(&(&1 in map)) ··· 47 end 48 end 49 ``` 50 51 ## Part 1 52 53 ```elixir 54 - Enum.count(rolls, &PaperRolls.free?(&1, rolls)) 55 ``` 56 57 ## Part 2 58 ··· 61 Stream.repeatedly(fn -> [] end) 62 |> Enum.reduce_while(rolls, fn _, acc -> 63 removable = 64 - Enum.filter(acc, &PaperRolls.free?(&1, acc)) 65 |> MapSet.new() 66 67 case MapSet.difference(acc, removable) do ··· 75 MapSet.size(rolls) - MapSet.size(cleaned) 76 ``` 77 78 - <!-- livebook:{"offset":1486,"stamp":{"token":"XCP.deDYlsmx1l6_24twLKmjhZpjVr-zKpCk4kKaQFxGe1gppbfdc-7UyFIZxpcR_jVCGfX6vDlmYQ7ACpVB7bxafYi0X3Avsi-upj46ogSc5zRBoDdxStrGLSLdSmW_EsudIg","version":2}} -->
··· 4 Mix.install([:kino_aoc]) 5 ``` 6 7 + ## Parse 8 9 <!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiI0Iiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 10 ··· 32 33 ```elixir 34 defmodule PaperRolls do 35 + defp adjacent({x, y}) do 36 for dx <- -1..1, 37 dy <- -1..1, 38 {dx, dy} != {0, 0}, 39 do: {x + dx, y + dy} 40 end 41 42 + def movable?(pos, map) do 43 pos 44 |> adjacent() 45 |> Enum.count(&(&1 in map)) ··· 47 end 48 end 49 ``` 50 + 51 + <!-- livebook:{"branch_parent_index":1} --> 52 53 ## Part 1 54 55 ```elixir 56 + Enum.count(rolls, &PaperRolls.movable?(&1, rolls)) 57 ``` 58 + 59 + <!-- livebook:{"branch_parent_index":1} --> 60 61 ## Part 2 62 ··· 65 Stream.repeatedly(fn -> [] end) 66 |> Enum.reduce_while(rolls, fn _, acc -> 67 removable = 68 + Enum.filter(acc, &PaperRolls.movable?(&1, acc)) 69 |> MapSet.new() 70 71 case MapSet.difference(acc, removable) do ··· 79 MapSet.size(rolls) - MapSet.size(cleaned) 80 ``` 81 82 + <!-- livebook:{"offset":1586,"stamp":{"token":"XCP.-_kcJR24r3dthl7SnpOh24JBI5hDpqMlFjQQDQ0pxtv4UHyaTlGoG4rG5iZxKtgxQoNAxw0K-mowSwehidDfrqewK3r9FHoOcAOIDbOMFd3QGH2X2Ta6KeXd4PlzWSYDBw","version":2}} -->
+10 -2
2025/day05.livemd
··· 7 ]) 8 ``` 9 10 - ## Section 11 12 <!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiI1Iiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 13 ··· 35 |> Enum.map(&String.to_integer/1) 36 ``` 37 38 ```elixir 39 Enum.count(ingridients, & &1 in fresh) 40 ``` 41 42 ```elixir 43 Enum.count(fresh) 44 ``` 45 46 - <!-- livebook:{"offset":863,"stamp":{"token":"XCP.XHMkonPfVQNZ43fIPanTNAFSPojbYWSWMU1wxn37_PPkpVpaY-fKZmAwoH-3qs2vx3CD_h34H1PjbHKDDWdrb7UxHoJoV5UxMppoorBtxw9hQF7YuznVwOa187BXPmKPcw","version":2}} -->
··· 7 ]) 8 ``` 9 10 + ## Parse 11 12 <!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiI1Iiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 13 ··· 35 |> Enum.map(&String.to_integer/1) 36 ``` 37 38 + <!-- livebook:{"branch_parent_index":0} --> 39 + 40 + ## Part 1 41 + 42 ```elixir 43 Enum.count(ingridients, & &1 in fresh) 44 ``` 45 46 + <!-- livebook:{"branch_parent_index":0} --> 47 + 48 + ## Part 2 49 + 50 ```elixir 51 Enum.count(fresh) 52 ``` 53 54 + <!-- livebook:{"offset":973,"stamp":{"token":"XCP.GHEtbWlG6LHz6I0d5Y_d4738EDILulvQyP1NtPISLeYWo9atG0Ailm43-eswn0JGS5h2z5Yxb8Xi8nGJLqUkj41eqpnT_u7NxVCT4ceeKMBsd5R-EuxBw0P7vLlBab68MA","version":2}} -->
+5 -1
2025/day06.livemd
··· 27 |> Enum.map(&String.to_atom/1) 28 ``` 29 30 ## Part 1 31 32 ```elixir ··· 39 {nums, :*} -> Enum.product(nums) 40 end) 41 ``` 42 43 ## Part 2 44 ··· 61 end) 62 ``` 63 64 - <!-- livebook:{"offset":1229,"stamp":{"token":"XCP.uuy6Ksg23kO8DXLs0nEHWRa2q8MnTF00fl1kNBDi-xlsQ1DZ_teumvy__d8PZSNG_VIsQ9fTr1rGiHu3aFBxxeOD5uVO2plujrne43wrcKxIt7wi6AInBo9LuC1gXgwFgw","version":2}} -->
··· 27 |> Enum.map(&String.to_atom/1) 28 ``` 29 30 + <!-- livebook:{"branch_parent_index":0} --> 31 + 32 ## Part 1 33 34 ```elixir ··· 41 {nums, :*} -> Enum.product(nums) 42 end) 43 ``` 44 + 45 + <!-- livebook:{"branch_parent_index":0} --> 46 47 ## Part 2 48 ··· 65 end) 66 ``` 67 68 + <!-- livebook:{"offset":1319,"stamp":{"token":"XCP.wqKPUf7KHN-UzqY1O8_n61vLL2ksAE_kGnIsQL0IpamJTD-NEX9_HbYK4H0y_NM8lKhqDz4rZ-TMFsXjuQ3n2-URGSNh_SCmDtJIbJBAP3mbiCwyN52oyGL0Nq5eD424MQ","version":2}} -->
+5 -7
2025/day07.livemd
··· 30 end) 31 ``` 32 33 ## Part 1 34 35 ```elixir ··· 92 import MapSet, only: [intersection: 2, difference: 2, union: 2] 93 94 for x <- beams do 95 - Image.Draw.point!(img, x, y, color: :green) 96 end 97 98 for x <- splits do 99 - Image.Draw.point!(img, x, y, color: :red) 100 end 101 102 hits = intersection(beams, splits) ··· 106 beams 107 end) 108 109 - #for {row, y} <- Enum.with_index(splitters, 1), 110 - # x <- row, 111 - # do: Image.Draw.point!(img, x, y, color: :red) 112 - 113 img 114 end) 115 |> then(fn {:ok, img} -> img end) 116 |> Image.resize!(5, interpolate: :nearest) 117 ``` 118 119 - <!-- livebook:{"offset":2629,"stamp":{"token":"XCP.lHomXHh84XridtwMBP5AP7BXVVCvUC-jx1w-h7SzIFygBNyHhdS1qTLyp97LGQ3Rf1f4to4IjQtJmlsi-0PrxC2vUjGg97fvP9zvt5n0IxMkwLnFfvafaIDjJSsZLX1Bcg","version":2}} -->
··· 30 end) 31 ``` 32 33 + <!-- livebook:{"branch_parent_index":0} --> 34 + 35 ## Part 1 36 37 ```elixir ··· 94 import MapSet, only: [intersection: 2, difference: 2, union: 2] 95 96 for x <- beams do 97 + Image.Draw.point(img, x, y, color: :green) 98 end 99 100 for x <- splits do 101 + Image.Draw.point(img, x, y, color: :red) 102 end 103 104 hits = intersection(beams, splits) ··· 108 beams 109 end) 110 111 img 112 end) 113 |> then(fn {:ok, img} -> img end) 114 |> Image.resize!(5, interpolate: :nearest) 115 ``` 116 117 + <!-- livebook:{"offset":2553,"stamp":{"token":"XCP.jUh_Ehkij-SpgOuY0sdHr5YT6IaJif0yd6mre9jiQpu7HHlbAvVeyKXHCNfcp0L0eLTRgut7HlWmzGi3AlT1SFWsJqgDuD-ePZl8JBbLYfW9j0leDSmN7-aQgVCmlMvFDw","version":2}} -->