You are given a 2 dimensional array. Compute products of length n consecutive digits along the rows and along the columns. Find the largest product in all rows and the largest product in all columns.
For the 2 dimensional array below, where n = 2, the result is:
max row is: 81, starting index 3, 5
max col is: 72, starting index 2, 6
[1, 2, 4, 6, 1, 7, 5]
[1, 2, 4, 5, 9, 2, 7]
[9, 4, 0, 1, 7, 4, 8]
[1, 9, 5, 6, 5, 9, 9]
[7, 5, 9, 7, 7, 4, 6]
let grid = [ [1, 2, 4, 6, 1, 7, 5], [1, 2, 4, 5, 9, 2, 7], [9, 4, 0, 1, 7, 4, 8], [1, 9, 5, 6, 5, 9, 9], [7, 5, 9, 7, 7, 4, 6] ] let numCount = 3 function getMaxByRow(grid, row, col, numCount) { let max = 0 let r = 0 let c = 0 let product = grid[row][col] for (var j = 1; j < numCount; j++) { product *= grid[row][col + j] } if (product > max) { max = product r = row c = col } return { max, r, c } } function getMaxByCol(grid, row, col, numCount) { let max = 0 let r = 0 let c = 0 let product = grid[row][col] for (let j = 1; j < numCount; j += 1) { product *= grid[row + j][col] } if (product > max) { max = product r = row c = col } return { max, r, c } } function getMax(grid, numCount) { let maxRow = 0 let maxRowRow = 0 let maxRowCol = 0 let maxCol = 0 let maxColRow = 0 let maxColCol = 0 let numRows = grid.length let numCols = grid[0].length let rowsToIterate = (numRows + 1 - numCount) let colsToIterate = (numCols + 1 - numCount) for (let row = 0; row < numRows; row++) { for (let col = 0; col < numCols; col++) { if (row < rowsToIterate) { let { max, r, c } = getMaxByCol(grid, row, col, numCount) if (max > maxCol) { maxCol = max maxColRow = r maxColCol = c } } if (col < colsToIterate) { let { max, r, c } = getMaxByRow(grid, row, col, numCount) if (max > maxRow) { maxRow = max maxRowRow = r maxRowCol = c } } } } console.log(max row is: ${maxRow} ${maxRowRow}, ${maxRowCol}
) console.log(max col is: ${maxCol} ${maxColRow}, ${maxColCol}
) } getMax(grid, numCount)