-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpe11.py
61 lines (53 loc) · 1.84 KB
/
pe11.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
'''What is the greatest product of four adjacent numbers in the same
direction (up, down, left, right, or diagonally) in the 20×20 grid?'''
from functools import reduce
matriz = []
def multiplicar(arr):
'''
Multiplica los elementos de una lista
:param arr:
:return:
'''
return reduce(lambda x, y: x* y, arr, 1)
def maxFilas():
'''
Devuelve el valor maximo de multiplicar 4 elementos consecutivos de cualquier fila
:return:
'''
resultado = 0
for fila in range(len(matriz)):
for columna in range(len(matriz[fila])-3):
#print(fila,columna)
resultado = max([multiplicar(matriz[fila][columna:columna+4]), resultado])
return resultado
def maxColumnas():
'''
Devuelve el valor maximo de multiplicar 4 elementos consecutivos de cualquier columna
:return:
'''
resultado = 0
for fila in range(len(matriz)-3):
for columna in range(len(matriz[fila])):
#print(i,j)
resultado = max([multiplicar([matriz[fila+n][columna] for n in range(4)]), resultado])
return resultado
def maxDiagonal():
'''
Devuelve el valor maximo de multiplicar 4 elementos consecutivos de cualquier diagonal
:return:
'''
resultado = 0
#Diagonal principal
for fila in range(len(matriz)-3):
for columna in range(len(matriz[fila])-3):
#print(i,j)
resultado = max([multiplicar([matriz[fila+n][columna+n] for n in range(4)]), resultado])
#Diagonal secundaria
for fila in range(len(matriz)-3):
for columna in range(3, len(matriz[fila])):
#print(i,j)
resultado = max([multiplicar([matriz[fila+n][columna-n] for n in range(4)]), resultado])
return resultado
for _ in range(20):
matriz.append(list(map(int, input().split())))
print(max((maxFilas(),maxColumnas(), maxDiagonal())))