2024-12-03 06:43:43 +01:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import re
|
2024-12-04 07:49:54 +01:00
|
|
|
|
2024-12-03 06:43:43 +01:00
|
|
|
def read_input(filename):
|
|
|
|
with open(filename) as f:
|
|
|
|
for line in f:
|
|
|
|
line = line.strip()
|
|
|
|
yield line
|
|
|
|
|
|
|
|
def main(args):
|
|
|
|
memory = read_input(args.file)
|
|
|
|
|
|
|
|
result = 0
|
|
|
|
mul_enabled = True
|
|
|
|
for memory in read_input(args.file):
|
|
|
|
mul_list = re.findall(r'mul\(\d+\,\d+\)|don\'t\(\)|do\(\)', memory)
|
|
|
|
for mul in mul_list:
|
|
|
|
if mul.startswith('don'):
|
|
|
|
mul_enabled = False
|
|
|
|
continue
|
|
|
|
if mul.startswith('do'):
|
|
|
|
mul_enabled = True
|
|
|
|
continue
|
|
|
|
if not mul_enabled:
|
|
|
|
continue
|
|
|
|
tmp = re.search(r'mul\((\d+),(\d+)\)', mul)
|
|
|
|
if tmp is not None:
|
|
|
|
x = int(tmp[1]) * int(tmp[2])
|
|
|
|
result += x
|
|
|
|
|
|
|
|
print(result)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
import argparse
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser(
|
|
|
|
prog='AdventOfCode 2024, Day 03, part 2',
|
|
|
|
)
|
|
|
|
parser.add_argument('-f', '--file', required=True)
|
|
|
|
args = parser.parse_args()
|
|
|
|
main(args)
|