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)