08
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
|
||||
with open('input') as file:
|
||||
field = list(map(lambda x: list(map(int, x)), file.read().strip().split('\n')))
|
||||
|
||||
visible = set()
|
||||
|
||||
for i in range(len(field)):
|
||||
m = -1
|
||||
for j in range(len(field)):
|
||||
if field[i][j]>m:
|
||||
m = field[i][j]
|
||||
visible.add((i, j))
|
||||
|
||||
for i in range(len(field)):
|
||||
m = -1
|
||||
for j in range(len(field)-1, -1, -1):
|
||||
if field[i][j]>m:
|
||||
m = field[i][j]
|
||||
visible.add((i, j))
|
||||
|
||||
for j in range(len(field)-1, -1, -1):
|
||||
m = -1
|
||||
for i in range(len(field)):
|
||||
if field[i][j]>m:
|
||||
m = field[i][j]
|
||||
visible.add((i, j))
|
||||
|
||||
for j in range(len(field)-1, -1, -1):
|
||||
m = -1
|
||||
for i in range(len(field)-1, -1, -1):
|
||||
if field[i][j]>m:
|
||||
m = field[i][j]
|
||||
visible.add((i, j))
|
||||
|
||||
print(len(visible))
|
||||
|
||||
def scenic_score(field, mi, mj):
|
||||
n = len(field)
|
||||
m = len(field[0])
|
||||
s = 1
|
||||
k = 0
|
||||
i = mi+1
|
||||
while not (i==n or field[i][mj]>=field[mi][mj]):
|
||||
k += 1
|
||||
i += 1
|
||||
if not i==n:
|
||||
k += 1
|
||||
s *= k
|
||||
k = 0
|
||||
i = mi-1
|
||||
while not (i==-1 or field[i][mj]>=field[mi][mj]):
|
||||
k += 1
|
||||
i -= 1
|
||||
if not i==-1:
|
||||
k += 1
|
||||
s *= k
|
||||
k = 0
|
||||
j = mj+1
|
||||
while not (j==m or field[mi][j]>=field[mi][mj]):
|
||||
k += 1
|
||||
j += 1
|
||||
if not j==n:
|
||||
k += 1
|
||||
s *= k
|
||||
k = 0
|
||||
j = mj-1
|
||||
while not (j==-1 or field[mi][j]>=field[mi][mj]):
|
||||
k += 1
|
||||
j -= 1
|
||||
if not j==-1:
|
||||
k += 1
|
||||
s *= k
|
||||
return s
|
||||
|
||||
print(max(scenic_score(field, i, j) for i in range(len(field)) for j in range(len(field[0]))))
|
||||
Reference in New Issue
Block a user