summaryrefslogtreecommitdiff
path: root/2024/03/python/main.py
blob: 3713d85df7de607766dbeb60cfbfe29fb6d9df2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import re
import sys

with open(sys.argv[1], "r") as f:
    s = f.read()

silver = sum(int(x) * int(y) for x, y in re.findall(r"mul\((\d{1,3}),(\d{1,3})\)", s))

gold = 0
active = True
for g in re.findall(r"(?:mul\((\d{1,3}),(\d{1,3})\))|(don't\(\))|(do\(\))", s):
    match g, active:
        case (x, y, "", ""), True:
            gold += int(x) * int(y)
        case (_, _, "don't()", _), _:
            active = False
        case (_, _, _, "do()"), _:
            active = True


print("silver:", silver)
print("gold:", gold)