#/usr/bin/env python grid = [] def check_horizontal(grid): result = [] for i1 in range(0, len(grid)): max = -1 for i2 in range(0, len(grid[i1])): if grid[i1][i2] > max: max = grid[i1][i2] result.append((i1, i2)) max = -1 for i2 in reversed(range(0, len(grid[i1]))): if grid[i1][i2] > max: max = grid[i1][i2] result.append((i1, i2)) return result def check_vertical(grid): result = [] for i2 in range(0, len(grid[0])): max = -1 for i1 in range(0, len(grid)): if grid[i1][i2] > max: max = grid[i1][i2] result.append((i1, i2)) max = -1 for i1 in reversed(range(0, len(grid))): if grid[i1][i2] > max: max = grid[i1][i2] result.append((i1, i2)) return result with open("input.txt", "r") as f: for line in f: grid.append([int(c) for c in line.strip()]) trees_h = check_horizontal(grid) trees_v = check_vertical(grid) trees = trees_h + trees_v print(len(set(trees)))