def main(): grid = [ [ int(c) for c in line.strip() ] for line in open('inputs/10.txt') ] WIDTH = len(grid[0]) HEIGHT = len(grid) total = 0 # print(WIDTH, HEIGHT) for y, line in enumerate(grid): for x, c in enumerate(line): if c == 0: s = set() s.add(( x, y )) total += search(0, s, grid) print(f"Day 10 part 1: {total}") def search(level, items, grid) -> int: if level == 9: return len(items) s = set() new_level = level + 1 for x, y in items: if x - 1 >= 0 and grid[y][x - 1] == new_level: s.add(( x-1, y )) if x + 1 < len(grid[0]) and grid[y][x + 1] == new_level: s.add(( x+1, y )) if y - 1 >= 0 and grid[y-1][x] == new_level: s.add(( x, y-1 )) if y + 1 < len(grid) and grid[y+1][x] == new_level: s.add(( x, y+1 )) return search(new_level, s, grid) # if __name__ == '__main__': main()