Квадратная матрица, максимальные значения по параллельным побочной диагонали
Создать функцию, формирующая строку из максимальных элементов диагоналей целочисленного квадратного массива, параллельных его побочной диагонали.
Например дана матрица: 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, время: 17:42. |