-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path8.py
99 lines (89 loc) · 2.63 KB
/
8.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
values = []
with open("input/8.txt", "r") as f:
index = 0
for x in f.readlines():
if '\n' in x:
x = x[:-1]
inner = []
for c in x:
inner.append(int(c))
values.append(inner)
index += index
n = len(values)
m = len(values[0])
def firstPart():
result = [[False]*m for _ in range(n)]
#left and right
for i in range (0, n):
maxLeft = values[i][0]
maxRight = values[i][m-1]
result[i][0] = True
result[i][m-1] = True
for j in range (1, m-1):
if values[i][j] > maxLeft:
result[i][j] = True
maxLeft = values[i][j]
if values[i][m-j-1] > maxRight:
result[i][m-j-1] = True
maxRight = values[i][m-j-1]
#top and bottom
for j in range (0, m):
maxTop = values[0][j]
maxBottom = values[n-1][j]
result[0][j] = True
result[n-1][j] = True
for i in range (1,n-1):
if values[i][j] > maxTop:
result[i][j] = True
maxTop = values[i][j]
if values[n-i-1][j] > maxBottom:
result[n-i-1][j] = True
maxBottom = values[n-i-1][j]
count = 0
for i in range (0, n):
for j in range (0, m):
if result[i][j]:
count += 1
return count
def secondPart():
result = [[1]*m for _ in range(n)]
#left and right
for i in range (0, n):
for j in range (1, m):
number = j
for k in range(1,j):
if(values[i][j-k]) >= values[i][j]:
number = k
break
result[i][j] *= number
for j in range(0, m-1):
number = m-j-1
for k in range(j+1, m):
if(values[i][k] >= values[i][j]):
number = k-j
break
result[i][j] *= number
#top and bottom
for j in range (0, m):
for i in range (1, n):
number = i
for k in range(1,i):
if(values[i-k][j]) >= values[i][j]:
number = k
break
result[i][j] *= number
for i in range(0, n-1):
number = n-i-1
for k in range(i+1, n):
if(values[k][j] >= values[i][j]):
number = k-i
break
result[i][j] *= number
max = 0
for i in range (0, n):
for j in range (0, m):
if result[i][j] > max:
max = result[i][j]
return max
print(firstPart())
print(secondPart())