d3
This commit is contained in:
parent
e2e1684886
commit
cda9d2d2ce
56
day03.py
Normal file
56
day03.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
from tools.aoc import AOCDay
|
||||||
|
from tools.coordinate import Coordinate
|
||||||
|
from tools.grid import Grid
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
def build_grid(max_num: int, p2: bool = False) -> (Grid, Coordinate, int):
|
||||||
|
grid = Grid(0)
|
||||||
|
grid.set(Coordinate(0, 0), 1)
|
||||||
|
last_coord = Coordinate(0, 0)
|
||||||
|
last_num = max_num
|
||||||
|
dirs = [(-1, 0), (0, 1), (1, 0), (0, -1)]
|
||||||
|
dir_index = 2
|
||||||
|
cur_dir = dirs[dir_index]
|
||||||
|
check_dir = dirs[dir_index + 1]
|
||||||
|
|
||||||
|
for x in range(2, max_num + 1):
|
||||||
|
last_coord += Coordinate(*cur_dir)
|
||||||
|
if not p2:
|
||||||
|
grid.set(last_coord, x)
|
||||||
|
else:
|
||||||
|
sum = grid.getNeighbourSum(last_coord)
|
||||||
|
grid.set(last_coord, sum)
|
||||||
|
if sum > max_num:
|
||||||
|
return grid, last_coord, sum
|
||||||
|
if not grid.get(last_coord + Coordinate(*check_dir)):
|
||||||
|
dir_index = (dir_index + 1) % 4
|
||||||
|
cur_dir = dirs[dir_index]
|
||||||
|
check_dir = dirs[(dir_index + 1) % 4]
|
||||||
|
|
||||||
|
return grid, last_coord, last_num
|
||||||
|
|
||||||
|
|
||||||
|
class Day(AOCDay):
|
||||||
|
inputs = [
|
||||||
|
[
|
||||||
|
(31, "input3_test"),
|
||||||
|
(438, "input3")
|
||||||
|
],
|
||||||
|
[
|
||||||
|
(266330, "input3")
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
def part1(self) -> Any:
|
||||||
|
g, c, _ = build_grid(int(self.getInput()))
|
||||||
|
return abs(c.x) + abs(c.y)
|
||||||
|
|
||||||
|
def part2(self) -> Any:
|
||||||
|
g, c, i = build_grid(int(self.getInput()), True)
|
||||||
|
return i
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
day = Day(2017, 3)
|
||||||
|
day.run(verbose=True)
|
||||||
1
inputs/input3
Normal file
1
inputs/input3
Normal file
@ -0,0 +1 @@
|
|||||||
|
265149
|
||||||
1
inputs/input3_test
Normal file
1
inputs/input3_test
Normal file
@ -0,0 +1 @@
|
|||||||
|
1024
|
||||||
Loading…
Reference in New Issue
Block a user