35 lines
766 B
Python
35 lines
766 B
Python
""" day3 """
|
|
|
|
import re
|
|
import fileinput
|
|
|
|
def match_all(pending):
|
|
active = True
|
|
result = 0
|
|
|
|
while pending:
|
|
instr = re.search(r'(do|don\'t|mul)\(([0-9,]*)\)', pending)
|
|
if not instr:
|
|
break
|
|
pending = pending[instr.span()[1]:]
|
|
|
|
op=instr[1]
|
|
args=instr[2].split(',')
|
|
print(f'active={active} op={op} args={args}')
|
|
|
|
if op == 'do':
|
|
active = True
|
|
elif op == 'don\'t':
|
|
active = False
|
|
elif active and op == 'mul':
|
|
if len(args) == 2 and 1 <= len(args[0]) <= 3 and 1 <= len(args[1]) <= 3:
|
|
result += int(args[0]) * int(args[1])
|
|
|
|
|
|
return result
|
|
|
|
input = ''
|
|
for line in fileinput.input():
|
|
input += line
|
|
print(match_all(input))
|