this repo has no description

Add forking to AoC 2025 solutions

hauleth.dev 8a394815 90dd84ae

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