36 lines
854 B
Python
36 lines
854 B
Python
from aoc import AOCDay
|
|
from typing import Any, List
|
|
|
|
|
|
def follow_directions(path: List) -> (int, int, int):
|
|
pos = 0
|
|
depth = 0
|
|
aim = 0
|
|
for direction in path:
|
|
if direction[0] == 'forward':
|
|
pos += direction[1]
|
|
depth += aim * direction[1]
|
|
elif direction[0] == 'down':
|
|
aim += direction[1]
|
|
elif direction[0] == 'up':
|
|
aim -= direction[1]
|
|
|
|
return pos, depth, aim
|
|
|
|
|
|
class Day(AOCDay):
|
|
test_solutions_p1 = [150]
|
|
test_solutions_p2 = [900]
|
|
|
|
def part1(self) -> Any:
|
|
path = self.getInputAsArraySplit(" ", [str, int])
|
|
pos, _, depth = follow_directions(path)
|
|
|
|
return pos * depth
|
|
|
|
def part2(self) -> Any:
|
|
path = self.getInputAsArraySplit(" ", [str, int])
|
|
pos, depth, _ = follow_directions(path)
|
|
|
|
return pos * depth
|