#!/usr/bin/env python import re def read_input(filename): with open(filename) as f: for line in f: line = line.strip() yield line def main(args): memory = read_input(args.file) result = 0 mul_enabled = True for memory in read_input(args.file): mul_list = re.findall(r'mul\(\d+\,\d+\)|don\'t\(\)|do\(\)', memory) for mul in mul_list: if mul.startswith('don'): mul_enabled = False continue if mul.startswith('do'): mul_enabled = True continue if not mul_enabled: continue tmp = re.search(r'mul\((\d+),(\d+)\)', mul) if tmp is not None: x = int(tmp[1]) * int(tmp[2]) result += x print(result) if __name__ == "__main__": import argparse parser = argparse.ArgumentParser( prog='AdventOfCode 2024, Day 03, part 2', ) parser.add_argument('-f', '--file', required=True) args = parser.parse_args() main(args)