- commit
- 678dc276c27cf901802b27d1df7c22e83e73567c
- parent
- 29279385907e6239e81404a2acd91108469daa72
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2021-12-25 12:05
day 24 better solution https://neddit.ce9e.org/r/adventofcode/comments/rnejv5/2021_day_24_solutions/hpv7g7j/
Diffstat
A | 2021/24/foo.py | 37 | +++++++++++++++++++++++++++++++++++++ |
1 files changed, 37 insertions, 0 deletions
diff --git a/2021/24/foo.py b/2021/24/foo.py
@@ -0,0 +1,37 @@ -1 1 digits1 = [(0, 0) for _ in range(14)] -1 2 digits2 = [(0, 0) for _ in range(14)] -1 3 stack = [] -1 4 -1 5 with open('input.txt') as f: -1 6 for i, line in enumerate(f): -1 7 _, *operands = line.rstrip().split(' ') -1 8 if i % 18 == 4: # `div z {i}` with 1|26 -1 9 a = int(operands[1]) -1 10 elif i % 18 == 5: # `add x {i}` -1 11 b = int(operands[1]) -1 12 elif i % 18 == 15: # `add y {i}` -1 13 c = int(operands[1]) -1 14 print(a, b, c) -1 15 -1 16 k = i // 18 -1 17 if a == 1: -1 18 stack.append((k, c)) -1 19 else: -1 20 other, other_c = stack.pop() -1 21 diff = other_c + b -1 22 # digits[k] - digits[other] == diff -1 23 if diff < 0: -1 24 digits1[other] = 9 -1 25 digits1[k] = 9 + diff -1 26 -1 27 digits2[other] = 1 - diff -1 28 digits2[k] = 1 -1 29 else: -1 30 digits1[other] = 9 - diff -1 31 digits1[k] = 9 -1 32 -1 33 digits2[other] = 1 -1 34 digits2[k] = 1 + diff -1 35 -1 36 print(''.join(str(d) for d in digits1)) -1 37 print(''.join(str(d) for d in digits2))