[py] Solve 2022_05
This commit is contained in:
parent
ff469b2afb
commit
0e1afe2017
2 changed files with 36 additions and 1 deletions
|
|
@ -4,7 +4,7 @@ from pathlib import Path
|
||||||
|
|
||||||
from .y2020 import d10
|
from .y2020 import d10
|
||||||
from .y2021 import d14
|
from .y2021 import d14
|
||||||
from .y2022 import d01, d02, d03, d04
|
from .y2022 import d01, d02, d03, d04, d05
|
||||||
|
|
||||||
DAYS = {
|
DAYS = {
|
||||||
"2020_10": y2020.d10.solve,
|
"2020_10": y2020.d10.solve,
|
||||||
|
|
@ -13,6 +13,7 @@ DAYS = {
|
||||||
"2022_02": y2022.d02.solve,
|
"2022_02": y2022.d02.solve,
|
||||||
"2022_03": y2022.d03.solve,
|
"2022_03": y2022.d03.solve,
|
||||||
"2022_04": y2022.d04.solve,
|
"2022_04": y2022.d04.solve,
|
||||||
|
"2022_05": y2022.d05.solve,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
34
py/aoc/y2022/d05.py
Normal file
34
py/aoc/y2022/d05.py
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
def solve(inputstr):
|
||||||
|
stackstr, movestr = inputstr.split("\n\n")
|
||||||
|
|
||||||
|
stacks = []
|
||||||
|
for line in stackstr.splitlines()[:-1]:
|
||||||
|
i = 0
|
||||||
|
while line:
|
||||||
|
crate, line = line[:3], line[4:]
|
||||||
|
if len(stacks) <= i:
|
||||||
|
stacks.append([])
|
||||||
|
if crate[0] == "[":
|
||||||
|
stacks[i].append(crate[1])
|
||||||
|
i += 1
|
||||||
|
for stack in stacks:
|
||||||
|
stack.reverse()
|
||||||
|
|
||||||
|
moves = []
|
||||||
|
for line in movestr.splitlines():
|
||||||
|
_, amount, _, source, _, target = line.split()
|
||||||
|
moves.append((int(amount), int(source), int(target)))
|
||||||
|
|
||||||
|
# Part 1
|
||||||
|
part1 = [list(stack) for stack in stacks]
|
||||||
|
for amount, source, target in moves:
|
||||||
|
for _ in range(amount):
|
||||||
|
part1[target - 1].append(part1[source - 1].pop())
|
||||||
|
print("Part 1:", "".join(stack[-1] for stack in part1))
|
||||||
|
|
||||||
|
# Part 2
|
||||||
|
part2 = [list(stack) for stack in stacks]
|
||||||
|
for amount, source, target in moves:
|
||||||
|
part2[target - 1].extend(part2[source - 1][-amount:])
|
||||||
|
part2[source - 1] = part2[source - 1][:-amount]
|
||||||
|
print("Part 2:", "".join(stack[-1] for stack in part2))
|
||||||
Loading…
Add table
Add a link
Reference in a new issue