diff options
author | mhsn <mail@mhsn.net> | 2024-12-07 12:00:00 +0000 |
---|---|---|
committer | mhsn <mail@mhsn.net> | 2024-12-07 12:00:00 +0000 |
commit | b83d6446daab4f0a625765b226a37e3f779be7d2 (patch) | |
tree | 95ef8c8b3335135521f65acaf26a17cfdbce74d4 | |
parent | 8c7880165d47d0646ca5f0d317f57649575e73d9 (diff) | |
download | aoc-b83d6446daab4f0a625765b226a37e3f779be7d2.tar.gz aoc-b83d6446daab4f0a625765b226a37e3f779be7d2.zip |
2024-07 python p1,p2
-rw-r--r-- | 2024/07/python/main.py | 35 |
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) |