Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.11.2019, 09:48
Кандидат Javascript-наук
Отправить личное сообщение для Retro_1477 Посмотреть профиль Найти все сообщения от Retro_1477
 
Регистрация: 14.04.2018
Сообщений: 113

Квадратная матрица, максимальные значения по параллельным побочной диагонали
Создать функцию, формирующая строку из максимальных элементов диагоналей целочисленного квадратного массива, параллельных его побочной диагонали.

Например дана матрица:
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);
  });
}
Ответить с цитированием
  #2 (permalink)  
Старый 05.11.2019, 11:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

матрица максимум по диагонали
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);

Последний раз редактировалось рони, 05.11.2019 в 11:59.
Ответить с цитированием
  #3 (permalink)  
Старый 05.11.2019, 13:31
Кандидат Javascript-наук
Отправить личное сообщение для Retro_1477 Посмотреть профиль Найти все сообщения от Retro_1477
 
Регистрация: 14.04.2018
Сообщений: 113

Спасибо, великий
Ответить с цитированием
  #4 (permalink)  
Старый 05.11.2019, 18:18
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

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));
Ответить с цитированием
  #5 (permalink)  
Старый 05.11.2019, 18:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Alexandroppolus,
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск