adventofcode

git clone https://git.ce9e.org/adventofcode.git

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))