from math import prod from output import matrix def solve(data): M, R, C = matrix(data) p1 = 2 * R + 2 * C - 4 p2 = 0 for row in range(1, R - 1): for col in range(1, C - 1): h = int(M[row][col]) visible = 0 score = [] for i, dy in enumerate(range(row - 1, -1, -1), start=1): if h <= int(M[dy][col]): break else: visible += 1 score.append(i) for i, dx in enumerate(range(col + 1, C), start=1): if h <= int(M[row][dx]): break else: visible += 1 score.append(i) for i, dy in enumerate(range(row + 1, R), start=1): if h <= int(M[dy][col]): break else: visible += 1 score.append(i) for i, dx in enumerate(range(col - 1, -1, -1), start=1): if h <= int(M[row][dx]): break else: visible += 1 score.append(i) if visible: p1 += 1 p2 = max(prod(score), p2) return p1, p2 if __name__ == "__main__": with open("./input/08.txt", "r") as f: inp = f.read().strip() p1, p2 = solve(inp) print(p1) print(p2) assert p1 == 1812 assert p2 == 315495