Skip to content

Commit

Permalink
2024 day 3
Browse files Browse the repository at this point in the history
  • Loading branch information
Ted Cassirer committed Dec 3, 2024
1 parent 534fa88 commit 1fd5c8d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
29 changes: 29 additions & 0 deletions aoc_cas/aoc2024/day3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import re

from aoc_cas.cli import solve

MUL_REGEX = re.compile(r"mul\((\d+,\d+)\)")
DO_DONT_REGEX = re.compile(r"((don't\(\)).+?(do\(\)))|don't\(\).+?$")


def _sum_mults(data: str) -> int:
result = 0
for match in MUL_REGEX.findall(data):
n1, n2 = map(int, match.split(","))
result += n1 * n2
return result


def part_a(data: str) -> int:
return _sum_mults(data)


def part_b(data: str) -> int:
donts_removed = DO_DONT_REGEX.sub("", data.replace("\n", ""))
return _sum_mults(donts_removed)


if __name__ == "__main__":
from aoc_cas.util import solve_with_examples

solve_with_examples(year=2024, day=3)
8 changes: 8 additions & 0 deletions tests/fixtures/2024/3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))
mul
-
161
===
xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))
-
48

0 comments on commit 1fd5c8d

Please sign in to comment.