diff --git a/Basic-Graphs/cs412_islands_a.py b/Basic-Graphs/cs412_islands_a.py index 50a5050..63186dc 100644 --- a/Basic-Graphs/cs412_islands_a.py +++ b/Basic-Graphs/cs412_islands_a.py @@ -8,38 +8,30 @@ Honor Code and Acknowledgments: Comments here on your code and submission. """ -import numpy as np -type LandGrid = np.ndarray[tuple[int, int], np.dtype[np.bool]] - - -def explore_island(grid: LandGrid, start: tuple[int, int]) -> int: - num_rows, num_cols = grid.shape +def explore_island(grid: list[list[int]], start: tuple[int, int]) -> int: + num_rows: int = len(grid) + num_cols: int = len(grid[0]) size: int = 0 def recurse(coord: tuple[int, int]): x, y = coord - if not grid[y, x]: + if grid[y][x] == 0: return nonlocal size size += 1 - grid[y, x] = False - - neighbors: list[tuple[int, int]] = [] + grid[y][x] = 0 if y > 0: - neighbors.append((x, y - 1)) + recurse((x, y - 1)) if y < num_rows - 1: - neighbors.append((x, y + 1)) + recurse((x, y + 1)) if x > 0: - neighbors.append((x - 1, y)) + recurse((x - 1, y)) if x < num_cols - 1: - neighbors.append((x + 1, y)) - - for neighbor in neighbors: - recurse(neighbor) + recurse((x + 1, y)) recurse(start) @@ -51,16 +43,16 @@ def explore_island(grid: LandGrid, start: tuple[int, int]) -> int: def main(): n: int = int(input()) - raw_matrix: list[list[int]] = [list(map(int, input().split())) for _ in range(0, n)] + land_grid: list[list[int]] = [list(map(int, input().split())) for _ in range(0, n)] - land_grid: LandGrid = np.array(raw_matrix, dtype=bool) - num_rows, num_cols = land_grid.shape + num_rows: int = n + num_cols: int = len(land_grid[0]) largest_island: int = -1 for y in range(0, num_rows): for x in range(0, num_cols): - if not land_grid[y, x]: + if land_grid[y][x] == 0: continue island_size: int = explore_island(land_grid, (x, y))