From b5ea05b3ffa77daa32584b263fdec134f2783fa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Niemier?= <~@hauleth.dev> Date: Mon, 1 Dec 2025 11:21:21 +0100 Subject: [PATCH] Day 3 of 2025 --- 2025/day02.livemd | 2 +- 2025/day03.livemd | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 2025/day03.livemd 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))) +``` + + -- 2.51.2