diff --git a/day13.py b/day13.py index 72cb37c..253b9c7 100644 --- a/day13.py +++ b/day13.py @@ -7,31 +7,33 @@ from typing import Any def get_reflection_value(grid: Grid, ignore: int = 0) -> int: # search horizontal for x in grid.rangeX(): + nx = x + 1 col = grid.get_column(x) - if col == grid.get_column(x + 1): + if col == grid.get_column(nx): match = True for dx in range(1, grid.maxX - x): if x - dx < 0: break - if grid.get_column(x - dx) != grid.get_column(x + dx + 1): + if grid.get_column(x - dx) != grid.get_column(nx + dx): match = False break - if match and x + 1 != ignore: - return x + 1 + if match and nx != ignore: + return nx # search vertical for y in grid.rangeY(): + ny = y + 1 row = grid.get_row(y) - if row == grid.get_row(y + 1): + if row == grid.get_row(ny): match = True for dy in range(1, grid.maxY - y): if y - dy < 0: break - if grid.get_row(y - dy) != grid.get_row(y + dy + 1): + if grid.get_row(y - dy) != grid.get_row(ny + dy): match = False break - if match and 100 * (y + 1) != ignore: - return 100 * (y + 1) + if match and 100 * ny != ignore: + return 100 * ny return -1 @@ -60,16 +62,13 @@ class Day(AOCDay): def part2(self) -> Any: grids = self.parse_input() ref_value = 0 - for i, grid in enumerate(grids): + for grid in grids: orig_ref = get_reflection_value(grid) found = False for x in grid.rangeX(): for y in grid.rangeY(): c = Coordinate(x, y) - if grid.get(c) == "#": - grid.set(c, ".") - else: - grid.set(c, "#") + grid.set(c, "." if grid.get(c) == "#" else "#") v = get_reflection_value(grid, orig_ref) if v > 0: @@ -77,10 +76,7 @@ class Day(AOCDay): found = True break - if grid.get(c) == "#": - grid.set(c, ".") - else: - grid.set(c, "#") + grid.set(c, "." if grid.get(c) == "#" else "#") if found: break