|
- import re
- import copy
-
-
- top, bottom = open(0).read().split('\n\n')
- transpose = '\n'.join(map(''.join, zip(*top.splitlines())))
- stacks = [list(ln[::-1][1:].strip()) for ln in transpose.splitlines()[1::4]]
-
-
- def operate(stacks, is_upgraded):
- for line in bottom.splitlines():
- qty, fro, to = map(int, re.findall(r'\d+', line))
- fro, to = fro - 1, to - 1 # shift
- carry = [stacks[fro].pop() for _ in range(qty) if stacks[fro]]
- stacks[to].extend(carry[::-1] if is_upgraded else carry)
- return ''.join(s[-1] for s in stacks if s)
-
-
- print(operate(copy.deepcopy(stacks), 0))
- print(operate(copy.deepcopy(stacks), 1))
|