You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
import aocd
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
puzzle_input = aocd.get_data(day=5, year=2022)
|
|
inputs = puzzle_input.split('\n\n')
|
|
cargo = [[],[],[],[],[],[],[],[],[]]
|
|
moves = inputs[1].replace('move ','').replace(' from ',',').replace(' to ',',').split('\n')
|
|
transposed_cargo = inputs[0].split('\n')[:-1]
|
|
|
|
for s,stack in enumerate(cargo):
|
|
for transposed_stack in reversed(transposed_cargo):
|
|
for letter in transposed_stack[1+s*4]:
|
|
if letter != ' ':
|
|
stack.append(letter)
|
|
|
|
for m,move in enumerate(moves):
|
|
column_to = int(move.split(',')[2])-1
|
|
column_from = int(move.split(',')[1])-1
|
|
moved_number = int(move.split(',')[0])
|
|
# Part 1
|
|
# cargo[column_to] = cargo[column_to] + list(reversed(cargo[column_from][-moved_number::]))
|
|
# Part 2
|
|
cargo[column_to] = cargo[column_to] + cargo[column_from][-moved_number::]
|
|
cargo[column_from] = cargo[column_from][:-moved_number]
|
|
|
|
answer = []
|
|
for stack in cargo:
|
|
answer.append(stack[-1])
|
|
print(str("".join(answer))) |