39 lines
1 KiB
Python
39 lines
1 KiB
Python
|
|
from solutions import BaseSolution
|
||
|
|
|
||
|
|
|
||
|
|
class Solution(BaseSolution):
|
||
|
|
input_file = "02.txt"
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return "Day 2: Drive!"
|
||
|
|
|
||
|
|
def parse_input(self, data):
|
||
|
|
def xy(direction, value):
|
||
|
|
if direction == "forward":
|
||
|
|
return (0, int(value))
|
||
|
|
elif direction == "up":
|
||
|
|
return (-int(value), 0)
|
||
|
|
elif direction == "down":
|
||
|
|
return (int(value), 0)
|
||
|
|
|
||
|
|
return [xy(*l.split()) for l in data.strip().splitlines()]
|
||
|
|
|
||
|
|
def solve(self, puzzle_input):
|
||
|
|
x = sum(map(lambda xy: xy[0], puzzle_input))
|
||
|
|
y = sum(map(lambda xy: xy[1], puzzle_input))
|
||
|
|
return x * y
|
||
|
|
|
||
|
|
def solve_again(self, puzzle_input):
|
||
|
|
pos = (0, 0, 0)
|
||
|
|
for x, y in puzzle_input:
|
||
|
|
if y > 0:
|
||
|
|
pos = (pos[2] * y + pos[0], pos[1] + y, pos[2])
|
||
|
|
else:
|
||
|
|
pos = (pos[0], pos[1], pos[2] + x)
|
||
|
|
return pos[0] * pos[1]
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
solution = Solution()
|
||
|
|
solution.show_results()
|