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, |
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 """ |
||
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 |
row2, col2 = row + length, col + length |
||
if row < nrow - length |
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 |
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 { |
print(f"The max {length}-product is {maxprod}, product of {arr} at row {maxrow}, col {maxcol}.") |
||
MATRIX = [ |
MATRIX = [ |