24 lines
600 B
Python
24 lines
600 B
Python
|
|
import re
|
||
|
|
with open("input-xlarge", "r") as inputFile:
|
||
|
|
memory = inputFile.read()
|
||
|
|
do_memory = memory.split("don't()")
|
||
|
|
|
||
|
|
|
||
|
|
# part 1
|
||
|
|
def apply_multipliers(s: str):
|
||
|
|
prods = []
|
||
|
|
multipliers = re.findall("mul\(\d{1,3},\d{1,3}\)", s)
|
||
|
|
for m in multipliers:
|
||
|
|
nums = list(map(int, re.findall("\d+", m)))
|
||
|
|
prods.append(nums[0] * nums[1])
|
||
|
|
return sum(prods)
|
||
|
|
|
||
|
|
|
||
|
|
# part 2
|
||
|
|
sum_dos = apply_multipliers(do_memory[0])
|
||
|
|
for line in do_memory[1:]:
|
||
|
|
if "do()" in line:
|
||
|
|
split_line = "".join(line.split('do()')[1:])
|
||
|
|
sum_dos += apply_multipliers(split_line)
|
||
|
|
print(sum_dos)
|