summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormhsn <mail@mhsn.net>2024-12-07 12:00:00 +0000
committermhsn <mail@mhsn.net>2024-12-07 12:00:00 +0000
commitb83d6446daab4f0a625765b226a37e3f779be7d2 (patch)
tree95ef8c8b3335135521f65acaf26a17cfdbce74d4
parent8c7880165d47d0646ca5f0d317f57649575e73d9 (diff)
downloadaoc-b83d6446daab4f0a625765b226a37e3f779be7d2.tar.gz
aoc-b83d6446daab4f0a625765b226a37e3f779be7d2.zip
2024-07 python p1,p2
-rw-r--r--2024/07/python/main.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/2024/07/python/main.py b/2024/07/python/main.py
new file mode 100644
index 0000000..0e72772
--- /dev/null
+++ b/2024/07/python/main.py
@@ -0,0 +1,35 @@
+from fileinput import input
+
+lines = [line.strip() for line in input()]
+
+
+def solve(w, acc, rest, gold=False):
+ if not rest:
+ return w == acc
+ if w < acc:
+ return False
+ head, *rest = rest
+ return (
+ solve(w, acc + head, rest, gold)
+ or solve(w, acc * head, rest, gold)
+ or (gold and solve(w, int(str(acc) + str(head)), rest, gold))
+ )
+
+
+silver = 0
+gold = 0
+
+for line in lines:
+ want, nums = line.split(":")
+ want = int(want)
+ nums = [int(n) for n in nums.split()]
+ head, *rest = nums
+
+ if solve(want, head, rest):
+ silver += want
+ if solve(want, head, rest, True):
+ gold += want
+
+
+print("silver:", silver)
+print("gold:", gold)