Largest product in a grid: Difference between revisions

Content added Content deleted
Line 323: Line 323:
from math import prod
from math import prod


def maxproduct(mat, nlen):
def maxproduct(mat, length):
""" find the largest product of len length horizontal or vertical length in matrix """
""" find the largest product of len length horizontal or vertical length in matrix """
length, nrow, ncol = nlen - 1, len(mat), len(mat[0])
nrow, ncol = len(mat), len(mat[0])
maxprod, maxrow, maxcol, arr = 0, [0, 0], [0, 0], [0]
maxprod, maxrow, maxcol, arr = 0, [0, 0], [0, 0], [0]
for row in range(nrow):
for row in range(nrow):
for col in range(ncol):
for col in range(ncol):
row2, col2 = row + length + 1, col + length + 1
row2, col2 = row + length, col + length
if row < nrow - length + 1:
if row < nrow - length:
array = [r[col] for r in mat[row:row2]]
array = [r[col] for r in mat[row:row2]]
pro = prod(array)
pro = prod(array)
if pro > maxprod:
if pro > maxprod:
maxprod, maxrow, maxcol, arr = pro, [row, row2], col, array
maxprod, maxrow, maxcol, arr = pro, [row, row2], col, array
if col < ncol - length + 1:
if col < ncol - length:
pro = prod(mat[row][col:col2])
pro = prod(mat[row][col:col2])
if pro > maxprod:
if pro > maxprod:
maxprod, maxrow, maxcol, arr = pro, row, [col, col2], mat[row][col:col2]
maxprod, maxrow, maxcol, arr = pro, row, [col, col2], mat[row][col:col2]


print(f"The max {nlen}-product is {maxprod}, product of {arr} at row {maxrow}, col {maxcol}.")
print(f"The max {length}-product is {maxprod}, product of {arr} at row {maxrow}, col {maxcol}.")


MATRIX = [
MATRIX = [