advent_of_code_2024/day_03/program.py
2024-12-03 19:47:16 +01:00

48 lines
1.3 KiB
Python
Executable file

#!/usr/bin/env python3
# https://adventofcode.com/2024/day/3
import re
def get_lines(filename: str) -> list:
with open(filename, "r") as file:
return [line.strip() for line in file.readlines()]
def part1_get_result_sum(lines: list) -> int:
result_sum = 0
for line in lines:
matches = re.findall(r"mul\((\d+),(\d+)\)", line)
for match in matches:
result_sum += int(match[0]) * int(match[1])
return result_sum
def part2_get_result_sum(lines: list) -> int:
result_sum = 0
active = True
pattern = re.compile(r"mul\((\d{1,3}),(\d{1,3})$")
for line in lines:
chunks = line.split(")")
for chunk in chunks:
if active:
if chunk.endswith("don't("):
active = False
elif match := re.search(pattern, chunk):
result_sum += int(match.group(1)) * int(match.group(2))
elif chunk.endswith("do("):
active = True
return result_sum
def main():
# lines = get_lines("sample-input.txt")
lines = get_lines("input.txt")
print("Part 1: The sum of the results is", part1_get_result_sum(lines))
print("Part 2: The sum of the results is", part2_get_result_sum(lines))
if __name__ == '__main__':
main()