advent_of_code

advent of code solves
git clone https://git.pastanoggin.com/advent_of_code.git
Log | Files | Refs

a.py (1210B)


      1 def is_visible(i, j):
      2     this = grid[i][j]
      3     surround = [
      4         [grid[i2][j] for i2 in range(i)],
      5         [grid[i][j2] for j2 in range(j)],
      6         [grid[i2][j] for i2 in range(i+1, len(grid))],
      7         [grid[i][j2] for j2 in range(j+1, len(grid[0]))],
      8     ]
      9     return any([all([s < this for s in sur]) for sur in surround])
     10 
     11 def view(i, j):
     12     score = 1
     13     this = grid[i][j]
     14     surround = [
     15         [grid[i2][j] for i2 in range(i-1, -1, -1)],
     16         [grid[i][j2] for j2 in range(j-1, -1, -1)],
     17         [grid[i2][j] for i2 in range(i+1, len(grid))],
     18         [grid[i][j2] for j2 in range(j+1, len(grid[0]))],
     19     ]
     20     for sur in surround:
     21         surlen = len(sur)
     22         i = 0
     23         while i < surlen and sur[i] < this:
     24             i += 1
     25         if i < surlen and sur[i] >= this:
     26             i += 1
     27         score *= i
     28     return score
     29     
     30 
     31 #with open("example") as f:
     32 with open("input") as f:
     33     grid = [line.strip() for line in f.readlines()]
     34 width, height = len(grid[0]), len(grid)
     35 edge_visible = (width + height-2) * 2 
     36 highest = 0
     37 for i in range(1, height-1):
     38     for j in range(1, width-1):
     39         score = view(i, j)
     40         if score > highest:
     41             highest = score
     42 print(highest)