summaryrefslogtreecommitdiff
path: root/2024/07/python/main.py
blob: 0e727723252ce52cbbc44ccee6189241533c080c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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)