summaryrefslogtreecommitdiffstats
path: root/24.py
blob: fee2116c212f865f5d8e90d213d59da5d47f3109 (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
from utils import open_day

digits = dict()
stack = list()

with open_day(24) as f:
    dig = 0
    for i, line in enumerate(f):
        _, *operands = line.rstrip().split(' ')
        if i % 18 == 4: push = operands[1] == '1'
        if i % 18 == 5: sub = int(operands[1])
        if i % 18 == 15:
            add = int(operands[1])
            if push:
                stack.append((dig, add))
            else:
                sibling, add = stack.pop()
                diff = add + sub
                if diff < 0:
                    digits[sibling] = (-diff + 1, 9)
                    digits[dig] = (1, 9 + diff)
                else:
                    digits[sibling] = (1, 9 - diff)
                    digits[dig] = (1 + diff, 9)
            dig += 1

print(''.join(str(digits[d][1]) for d in sorted(digits.keys())))
print(''.join(str(digits[d][0]) for d in sorted(digits.keys())))