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 77c248b
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 8 deletions.
13 changes: 5 additions & 8 deletions aoc_cas/aoc2024/day1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,23 @@
def _parse_lists(data: str) -> tuple[list[int], list[int]]:
left_list, right_list = [], []
for line in data.splitlines():
left, right = line.split(" ")
left_list.append(int(left))
right_list.append(int(right))
left, right = map(int, line.split(" "))
left_list.append(left)
right_list.append(right)
return left_list, right_list


def part_a(data: str) -> int:
left, right = _parse_lists(data)
left.sort()
right.sort()
total_dist = 0
for l, r in zip(left, right):
total_dist += abs(l - r)
return total_dist
return sum(abs(r - l) for l, r in zip(left, right))


def part_b(data: str) -> int:
left, right = _parse_lists(data)
left_count, right_count = Counter(left), Counter(right)
return sum(k * left_count[k] * right_count[k] for k in left_count.keys())
return sum(k * left_count[k] * right_count[k] for k in left_count.keys() & right_count.keys())


if __name__ == "__main__":
Expand Down
21 changes: 21 additions & 0 deletions aoc_cas/aoc2024/day3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import re


def _mul_sum(data: str) -> int:
return sum(int(n1) * int(n2) for n1, n2 in re.findall(r"mul\((\d+),(\d+)\)", data))


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


def part_b(data: str) -> int:
data = data.replace("\n", "")
enabled_data = re.sub(r"((don't\(\)).+?(do\(\)))|(don't\(\).+?$)", "", data)
return _mul_sum(enabled_data)


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 77c248b

Please sign in to comment.