diff --git a/2025/day02.livemd b/2025/day02.livemd index ca85efd..e52d040 100644 --- a/2025/day02.livemd +++ b/2025/day02.livemd @@ -77,4 +77,4 @@ ranges |> Enum.sum() ``` - + diff --git a/2025/day03.livemd b/2025/day03.livemd new file mode 100644 index 0000000..0f5247c --- /dev/null +++ b/2025/day03.livemd @@ -0,0 +1,52 @@ +# Day 03 + +```elixir +Mix.install([:kino_aoc]) +``` + +## Section + + + +```elixir +{:ok, puzzle_input} = + KinoAOC.download_puzzle("2025", "3", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) +``` + +```elixir +batteries = + puzzle_input + |> String.split("\n", trim: true) + |> Enum.map(fn row -> + row + |> String.to_charlist() + |> Enum.map(& &1 - ?0) + end) +``` + +```elixir +defmodule Joltage do + def make_largest(list, n) do + to_remove = length(list) - n + Enum.reduce(1..to_remove, list, fn _, acc -> make_larger(acc) end) + end + + def make_larger([_]), do: [] + def make_larger([a, b | rest]) when a < b, do: [b | rest] + def make_larger([b | rest]), do: [b | make_larger(rest)] +end +``` + +## Part 1 + +```elixir +Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 2))) +``` + +## Part 2 + +```elixir +Enum.sum_by(batteries, &Integer.undigits(Joltage.make_largest(&1, 12))) +``` + +