Files
AOC2022/week5/supply_stacks.py

60 lines
1.7 KiB
Python

def task1():
with open(f'input/supply_stacks.txt', 'r') as input:
sanitized_input = [x.replace('\n', '') for x in input.readlines()]
stacks = [[] for i in range(9)]
stack_config = sanitized_input[:8][::-1]
for i in range(9):
for level in stack_config:
if level[4*i+1] != ' ':
stacks[i].append(level[4*i+1])
commands = sanitized_input[10:]
for command in commands:
tokens = command.split(' ')
count = int(tokens[1])
src = int(tokens[3])-1
dest = int(tokens[5])-1
for i in range(count):
tmp = stacks[src].pop()
stacks[dest].append(tmp)
top_elements = ""
for stack in stacks:
top_elements += stack.pop()
print(top_elements)
def task2():
with open(f'input/supply_stacks2.txt', 'r') as input:
sanitized_input = [x.replace('\n', '') for x in input.readlines()]
stacks = [[] for i in range(9)]
stack_config = sanitized_input[:8][::-1]
for i in range(9):
for level in stack_config:
if level[4*i+1] != ' ':
stacks[i].append(level[4*i+1])
commands = sanitized_input[10:]
for command in commands:
tokens = command.split(' ')
count = int(tokens[1])
src = int(tokens[3])-1
dest = int(tokens[5])-1
print(stacks)
tmp = stacks[src][-count:]
del stacks[src][-count:]
for i in tmp:
stacks[dest].append(i)
top_elements = ""
for stack in stacks:
top_elements += stack.pop()
print(top_elements)
task1()
task2()