added solutions for 3.2, 4.1, 4.2, 5.1 and 5.2
This commit is contained in:
59
week5/supply_stacks.py
Normal file
59
week5/supply_stacks.py
Normal file
@@ -0,0 +1,59 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user