60 lines
1.7 KiB
Python
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()
|