import os, argparse import numpy as np def solve_task(lines): trees = np.array([[int(c) for c in line] for line in lines]) visible = np.zeros((len(trees), len(trees[0]))) #print(visible) for r in range(4): check_visibility_from_left(np.rot90(trees, r), np.rot90(visible, r)) print(np.sum(visible)) def flip_y(trees): return [reversed(line) for line in trees] def check_visibility_from_left(trees, visibility): for y, line in enumerate(trees): tallest_so_far = -1 for x, tree_height in enumerate([int(c) for c in line]): if tree_height > tallest_so_far: tallest_so_far = tree_height visibility[y, x] = True def read_lines(filename): lines = [] with open(filename) as infile: for raw_line in infile: line = raw_line.rstrip() lines.append(line) return lines def parse_arguments(): parser = argparse.ArgumentParser(description="Script that solves the case",epilog="Have a nice day!") parser.add_argument('filename', nargs='?', default="example.txt", help='Input file') args = parser.parse_args() return args def main(): args = parse_arguments() lines = read_lines(args.filename) solve_task(lines) if __name__ == "__main__": main()