advent-of-code/2017-python/solutions/day_11.py

42 lines
1.2 KiB
Python
Raw Normal View History

2021-11-01 16:40:46 +01:00
from solutions import BaseSolution
class Solution(BaseSolution):
input_file = '11.txt'
furthest_away = 0
# https://www.redblobgames.com/grids/hexagons/#coordinates
DIRECTIONS = {
'n': lambda x, y, z: (x, y + 1, z - 1),
'ne': lambda x, y, z: (x + 1, y, z - 1),
'se': lambda x, y, z: (x + 1, y - 1, z),
's': lambda x, y, z: (x, y - 1, z + 1),
'sw': lambda x, y, z: (x - 1, y, z + 1),
'nw': lambda x, y, z: (x - 1, y + 1, z),
}
def __str__(self):
return 'Day 11: Hex Ed'
def _get_end(self, steps):
x = 0
y = 0
z = 0
self.furthest_away = 0
for step in steps:
x, y, z = self.DIRECTIONS[step](x, y, z)
self.furthest_away = max(self.furthest_away, abs(x), abs(y), abs(z))
return abs(x), abs(y), abs(z)
def solve(self, puzzle_input):
x, y, z = self._get_end(puzzle_input.split(','))
return max(x, y, z)
def solve_again(self, puzzle_input):
_, *__ = self._get_end(puzzle_input.split(','))
return self.furthest_away
if __name__ == '__main__':
solution = Solution()
solution.show_results()