32 lines
837 B
Python
32 lines
837 B
Python
import re
|
|
|
|
def solve(s):
|
|
pattern = re.compile(r'mul\(([0-9]{1,3}),([0-9]{1,3})\)')
|
|
muls = [(int(m[0]), int(m[1])) for m in pattern.findall(s)]
|
|
print(sum(x*y for x,y in muls))
|
|
|
|
def solve2(s):
|
|
pattern = re.compile(r"mul\(([0-9]{1,3}),([0-9]{1,3})\)|(do)\(\)|(don't)\(\)")
|
|
enabled = 1
|
|
muls = []
|
|
for x,y,do,dont in pattern.findall(s):
|
|
if do:
|
|
enabled = 1
|
|
elif dont:
|
|
enabled = 0
|
|
else:
|
|
if enabled:
|
|
muls.append((int(x),int(y)))
|
|
|
|
print(sum(x*y for x,y in muls))
|
|
|
|
|
|
sample = "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))"
|
|
input = open("input").read()
|
|
solve(sample)
|
|
solve(input)
|
|
|
|
sample = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))"
|
|
solve2(sample)
|
|
solve2(input)
|