Advent of Code 2015 day 18 part 1&2: solved
This commit is contained in:
parent
3c0e4f1f22
commit
5f5189af22
|
|
@ -10,7 +10,7 @@ class Cell:
|
||||||
|
|
||||||
|
|
||||||
class Grid:
|
class Grid:
|
||||||
def __init__(self, part2:bool = False) -> None:
|
def __init__(self, part2: bool = False) -> None:
|
||||||
self.grid: list[list[Cell]] = []
|
self.grid: list[list[Cell]] = []
|
||||||
self.part2 = part2
|
self.part2 = part2
|
||||||
|
|
||||||
|
|
@ -27,7 +27,7 @@ class Grid:
|
||||||
|
|
||||||
def run_tick(self):
|
def run_tick(self):
|
||||||
new_grid = self.grid.copy()
|
new_grid = self.grid.copy()
|
||||||
neighbour_grid = [[0 for j in range(len(new_grid[0]))] for i in range(len(new_grid))]
|
neighbour_grid = [[0 for _ in range(len(new_grid[0]))] for _ in range(len(new_grid))]
|
||||||
for row in range(len(new_grid)):
|
for row in range(len(new_grid)):
|
||||||
for col in range(len(new_grid[row])):
|
for col in range(len(new_grid[row])):
|
||||||
neighbour_grid[row][col] = self.get_neighbours(row, col)
|
neighbour_grid[row][col] = self.get_neighbours(row, col)
|
||||||
|
|
@ -40,7 +40,7 @@ class Grid:
|
||||||
new_grid[row_index][col_index].dark()
|
new_grid[row_index][col_index].dark()
|
||||||
self.grid = new_grid
|
self.grid = new_grid
|
||||||
|
|
||||||
def tick_n_times(self, n: int, debug:bool = False):
|
def tick_n_times(self, n: int, debug: bool = False):
|
||||||
for _ in range(n):
|
for _ in range(n):
|
||||||
self.run_tick()
|
self.run_tick()
|
||||||
if debug:
|
if debug:
|
||||||
|
|
@ -50,7 +50,9 @@ class Grid:
|
||||||
neighbours: list[Cell] = []
|
neighbours: list[Cell] = []
|
||||||
for _row in range(row - 1, row + 2):
|
for _row in range(row - 1, row + 2):
|
||||||
for _col in range(col - 1, col + 2):
|
for _col in range(col - 1, col + 2):
|
||||||
if self.part2 and ((_row , _col) == (0,0) or (_row , _col) == (0,len(self.grid[0])-1) or (_row , _col) == (len(self.grid)-1,0) or (_row , _col) == (len(self.grid)-1,len(self.grid[0])-1)):
|
if self.part2 and (
|
||||||
|
(_row, _col) == (0, 0) or (_row, _col) == (0, len(self.grid[0]) - 1) or (_row, _col) == (
|
||||||
|
len(self.grid) - 1, 0) or (_row, _col) == (len(self.grid) - 1, len(self.grid[0]) - 1)):
|
||||||
if _row == row and _col == col:
|
if _row == row and _col == col:
|
||||||
return 3
|
return 3
|
||||||
neighbours.append(Cell(True))
|
neighbours.append(Cell(True))
|
||||||
|
|
@ -107,7 +109,7 @@ if __name__ == '__main__':
|
||||||
["#", "#", "#", "#", ".", "#"]]
|
["#", "#", "#", "#", ".", "#"]]
|
||||||
grid = Grid(part2=True)
|
grid = Grid(part2=True)
|
||||||
grid.load(test_input_2)
|
grid.load(test_input_2)
|
||||||
grid.tick_n_times(5, debug=True)
|
grid.tick_n_times(5)
|
||||||
assert grid.return_number_lit() == 17, "Error: Example 2 failed"
|
assert grid.return_number_lit() == 17, "Error: Example 2 failed"
|
||||||
print("All test passed")
|
print("All test passed")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue