aoc-2024/3/2.py
2024-12-03 00:39:30 -08:00

22 lines
567 B
Python

import re
def parse(raw: str) -> list[tuple[int]]:
finds = re.findall(r'do\(\)|don\'t\(\)|mul\([0-9]+,[0-9]+\)', raw)
active = True
pairs = []
for f in finds:
# Active or nah
if 'do(' in f: active = True
if 'don' in f: active = False
if not active or 'mul' not in f: continue
# Figure out the mult part
parts = f.strip('mul()').split(',')
pairs.append((int(parts[0]), int(parts[1])))
return pairs
with open('data.input') as file:
print(sum(m[0] * m[1] for m in parse(file.read())))