this repo has no description
1# Day 03
2
3```elixir
4Mix.install([:kino_aoc])
5```
6
7## Parse
8
9<!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiIzIiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} -->
10
11```elixir
12{:ok, puzzle_input} =
13 KinoAOC.download_puzzle("2025", "3", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION"))
14```
15
16```elixir
17batteries =
18 puzzle_input
19 |> String.split("\n", trim: true)
20 |> Enum.map(fn row ->
21 row
22 |> String.to_charlist()
23 |> Enum.map(& &1 - ?0)
24 end)
25```
26
27```elixir
28defmodule Joltage do
29 def make_largest(list, n) do
30 to_remove = length(list) - n
31 Enum.reduce(1..to_remove, list, fn _, acc -> make_larger(acc) end)
32 end
33
34 def make_larger([_]), do: []
35 def make_larger([a, b | rest]) when a < b, do: [b | rest]
36 def make_larger([b | rest]), do: [b | make_larger(rest)]
37end
38```
39
40<!-- livebook:{"branch_parent_index":0} -->
41
42## Part 1
43
44```elixir
45Enum.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
53Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 12)))
54```
55
56<!-- livebook:{"offset":1212,"stamp":{"token":"XCP.fo1ohV8LylIz8VmOAj7rlJ4Jn5KPGtiiFfsDRmp0pFSXCESjhfmQ11wOwEVmq9HM-Zn8fozQDsOoJbfgbM5LJPVE9c0pw2tYKbteOOGNqHI3PTIkuBnv8ZPW6oYwWAZy4A","version":2}} -->