Day 5 - Advent of Code 2022
Working solutions for the day 5 puzzles.
Part One
""" day_05_01.py """
# usage: python3 day_05_01.py < input
import sys
crates = []
while scan := input():
row = [j for i, j in enumerate(scan) if i % 4 == 1]
crates.append(row)
stacks = {i: [] for i in crates.pop()}
crates.reverse()
for row in crates:
for i, j in enumerate(row):
if not j.isspace():
stacks[str(i + 1)].append(j)
with sys.stdin as pipe:
for step in pipe:
_, qty, _, from_stack, _, to_stack = step.strip().split()
for i in range(int(qty)):
crate = stacks[from_stack].pop()
stacks[to_stack].append(crate)
print(''.join([stacks[i].pop() for i in stacks]))
Part Two
""" day_05_02.py """
# usage: python3 day_05_02.py < input
import sys
crates = []
while scan := input():
row = [j for i, j in enumerate(scan) if i % 4 == 1]
crates.append(row)
stacks = {i: [] for i in crates.pop()}
crates.reverse()
for row in crates:
for i, j in enumerate(row):
if not j.isspace():
stacks[str(i + 1)].append(j)
with sys.stdin as pipe:
for step in pipe:
_, qty, _, from_stack, _, to_stack = step.strip().split()
move = [stacks[from_stack].pop() for i in range(int(qty))]
move.reverse()
stacks[to_stack].extend(move)
print(''.join([stacks[i].pop() for i in stacks]))