summaryrefslogtreecommitdiff
path: root/aoc/2024/07/python.py
diff options
context:
space:
mode:
authormhsn <mail@mhsn.net>2026-03-18 21:48:13 +0000
committermhsn <mail@mhsn.net>2026-03-18 21:48:13 +0000
commit86bac31392a76da84817eec020d2b84d099b3cc1 (patch)
treee2ee52db59b86b914d5b4bcceb19c9b5d899fff4 /aoc/2024/07/python.py
parent62fe361fc42dea75deaf7ac31c0ba6ba80e26a9c (diff)
downloadpuzzles-master.tar.gz
puzzles-master.zip
add other challenges supportHEADmaster
Diffstat (limited to 'aoc/2024/07/python.py')
-rwxr-xr-xaoc/2024/07/python.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/aoc/2024/07/python.py b/aoc/2024/07/python.py
new file mode 100755
index 0000000..008af39
--- /dev/null
+++ b/aoc/2024/07/python.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+
+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)