summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormhsn <mail@mhsn.net>2024-12-03 12:00:00 +0000
committermhsn <mail@mhsn.net>2024-12-03 12:00:00 +0000
commit68110bf10a1d66655ffad7c9f58d868aefa94407 (patch)
treec56b91b12010335ae2a552ec7419213a598be478
parent18e156fa778b7ed73ce3b532ed09785171fdc75f (diff)
downloadaoc-68110bf10a1d66655ffad7c9f58d868aefa94407.tar.gz
aoc-68110bf10a1d66655ffad7c9f58d868aefa94407.zip
2024-03 python p1,p2
-rw-r--r--2024/03/python/main.py22
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)