From 9cf965cf097d59c88acf7e4a3de2b9b4511a280f Mon Sep 17 00:00:00 2001 From: Caleb Webber Date: Tue, 3 Dec 2024 09:26:30 -0500 Subject: [PATCH] add 2024 day 3 --- elixir/livebook/2024/day3.livemd | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 elixir/livebook/2024/day3.livemd diff --git a/elixir/livebook/2024/day3.livemd b/elixir/livebook/2024/day3.livemd new file mode 100644 index 0000000..8a2e79a --- /dev/null +++ b/elixir/livebook/2024/day3.livemd @@ -0,0 +1,33 @@ +# AOC 2024 Day 3 + +## Section + +```elixir +input = File.read!("/data/input.txt") +``` + +```elixir +Regex.scan( + ~r/mul\((\d+),(\d+)\)/, + input +) +|> Stream.map(fn [_, a, b] -> String.to_integer(a) * String.to_integer(b) end) +|> Enum.sum() +``` + +```elixir +for instruction <- Regex.scan( + ~r/(mul\((\d+),(\d+)\)|don't\(\)|do\(\))/, + input +), reduce: {true, 0} do + {enabled?, acc} -> + (fn + false, ["mul" <> _ | _] -> {false, acc} + true, ["mul" <> _, _, a, b] -> {true, acc + String.to_integer(a) * String.to_integer(b)} + _, ["don" <> _ | _] -> {false, acc} + _, ["do()" | _] -> {true, acc} + end + ).(enabled?, instruction) +end +``` +