diff options
author | mhsn <mail@mhsn.net> | 2024-12-03 12:00:00 +0000 |
---|---|---|
committer | mhsn <mail@mhsn.net> | 2024-12-03 12:00:00 +0000 |
commit | 68110bf10a1d66655ffad7c9f58d868aefa94407 (patch) | |
tree | c56b91b12010335ae2a552ec7419213a598be478 | |
parent | 18e156fa778b7ed73ce3b532ed09785171fdc75f (diff) | |
download | aoc-68110bf10a1d66655ffad7c9f58d868aefa94407.tar.gz aoc-68110bf10a1d66655ffad7c9f58d868aefa94407.zip |
2024-03 python p1,p2
-rw-r--r-- | 2024/03/python/main.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/2024/03/python/main.py b/2024/03/python/main.py new file mode 100644 index 0000000..3713d85 --- /dev/null +++ b/2024/03/python/main.py @@ -0,0 +1,22 @@ +import re +import sys + +with open(sys.argv[1], "r") as f: + s = f.read() + +silver = sum(int(x) * int(y) for x, y in re.findall(r"mul\((\d{1,3}),(\d{1,3})\)", s)) + +gold = 0 +active = True +for g in re.findall(r"(?:mul\((\d{1,3}),(\d{1,3})\))|(don't\(\))|(do\(\))", s): + match g, active: + case (x, y, "", ""), True: + gold += int(x) * int(y) + case (_, _, "don't()", _), _: + active = False + case (_, _, _, "do()"), _: + active = True + + +print("silver:", silver) +print("gold:", gold) |