19 lines
666 B
Python
Executable File
19 lines
666 B
Python
Executable File
#!/usr/bin/env python3
|
|
from useful import *
|
|
|
|
m = np.asarray([[int(c) for c in l] for l in lines(open(0))])
|
|
|
|
def sight(y, x, m, line):
|
|
return len(line) == 0 or np.all(m[y,x] > line)
|
|
print(sum(any(sight(y, x, m, line) for line in [m[:y, x], m[y+1:, x], m[y, :x], m[y, x+1:]])
|
|
for (y, x), _ in np.ndenumerate(m)))
|
|
|
|
def view(y, x, m, line):
|
|
l = len(list(takewhile(lambda t: m[y,x] > t, line)))
|
|
return l if l == len(line) else l + 1
|
|
def views(y, x, m):
|
|
return [view(y, x, m, line) for line in [m[:y, x][::-1], m[y+1:, x], m[y, :x][::-1], m[y, x+1:]]]
|
|
print(max([reduce(lambda a, b: a * b,
|
|
views(y, x, m))
|
|
for (y, x), _ in np.ndenumerate(m)]))
|