Квадратная матрица, максимальные значения по параллельным побочной диагонали
Создать функцию, формирующая строку из максимальных элементов диагоналей целочисленного квадратного массива, параллельных его побочной диагонали.
Например дана матрица: 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 Диагонали: 1| 2 5| 3 6 9| 4 7 8 5| 8 7 4| 6 3| 2 На выходе: 1, 5, 9, 8, 8, 6, 2 Наработки let sizeArray = 5; let width = sizeArray - 1; let height = sizeArray - 1; let matrix = []; for (let i = 0; i < sizeArray; i++) { matrix[i] = [] for (let j = 0; j < sizeArray; j++) { matrix[i][j] = random(-99, 99); } } let random = (min, max) => Math.round(Math.random() * (max - min) + min); let arrMax = arr => { return arr.reduce(function (p, v) { return (p > v ? p : v); }); }:help: |
матрица максимум по диагонали
Retro_1477,
let matrix = []; let width = 5; let height = 3; let random = (min, max) => Math.round(Math.random() * (max - min) + min); for (let i = 0; i < height; i++) { matrix[i] = [] for (let j = 0; j < width; j++) { matrix[i][j] = random(-99, 99); } }; let res = []; for (let k = 0; k < (width + height) - 1; k++) { let j = k < height ? 0 : k - height + 1; let i = k < height ? k : height - 1; let a = []; for (; matrix[i] && matrix[i][j] !== void 0; j++, i--) { a.push(matrix[i][j]) } a = Math.max(...a) res.push(a); }; console.log(res); console.table(matrix); |
Спасибо, великий
|
function maxdiags(m) { var len = m.length; var res = new Array(len * 2 - 1); for (var i = 0; i < len; ++i) { for (var j = 0; j < len; ++j) { res[i + j] = Math.max(res[i + j] || -Infinity, m[i][j]); } } return res; } var matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 8, 7, 6], [5, 4, 3, 2] ]; console.log(matrix); console.log(maxdiags(matrix)); |
Alexandroppolus,
:victory: |
Часовой пояс GMT +3, время: 23:57. |