05.py
1 from lib import * 2 3 input = read_input(2022, 5) 4 5 initial, instructions = input.split("\n\n") 6 nums, *initial = initial.splitlines()[::-1] 7 8 stacks = [[] for _ in pints(nums)] 9 for line in initial: 10 for i in range(0, len(line), 4): 11 if line[i + 1] != " ": 12 stacks[i // 4].append(line[i + 1]) 13 14 instructions = [(cnt, i - 1, j - 1) for cnt, i, j in map(pints, instructions.splitlines())] 15 16 17 _stacks = deepcopy(stacks) 18 for cnt, i, j in instructions: 19 for _ in range(cnt): 20 stacks[j].append(stacks[i].pop()) 21 print("".join(s[-1] for s in stacks)) 22 23 24 stacks = _stacks 25 for cnt, i, j in instructions: 26 stacks[j] += stacks[i][-cnt:] 27 del stacks[i][-cnt:] 28 print("".join(s[-1] for s in stacks))