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)
|