@Pavel13131313013

Поможете найти коэффициент “симметричности” матрицы?

Матрицу А назовем симметричной если элементы строки i + 1 являются элементами строки i с противоположной очередностью. Примером симетричной матрицы может быть следуюшая матрица

A = [
[1, 0, 0],
[0, 0, 1],
[1, 0, 0]
]
Количество тех шагов , которое необхадимо сделать с элементами матрицы (сложить или вичитать какое - то число), в результате которого получим симетричную матрицу називается коэффициент симетричности. Например

A = [
[3, 2, 1],
[1, 2, 3],
[3, 1, 3]
]
В случае этой матрицы, элементы мешающие симетричности, последние два элемента третей строки. Первому из которых нужно увеличить на 1, а второе уменьшить на 2. И тем количество нужних шагов будет 3. Надо написать функцию которая для данной матрицы будет возвращать коэффициент симетричности.

console.log([
[3, 2, 1],
[1, 2, 3],
[3, 1, 3]
]); // Должен выводится 3
console.log([
[3, 2, 1],
[1, 2, 3],
[3, 2, 1]
]); // Должен выводится 0
console.log([
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]
]); // Должен выводится 4
console.log([
[2, 4],
[4, 2]
]); // Должен выводится 0
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
код (спойлер)
var matrixes =  [
  [
    [3, 2, 1],
    [1, 2, 3],
    [3, 1, 3]
  ], // Должен выводится 3
  [
    [3, 2, 1],
    [1, 2, 3],
    [3, 2, 1]
  ], // Должен выводится 0
  [
    [1, 0, 0, 0],
    [0, 1, 0, 0],
    [0, 0, 1, 0],
    [0, 0, 0, 1]
  ], // Должен выводится 4
  [
   [2, 4],
   [4, 2]
  ] // Должен выводится 0 
];

matrixes.forEach( matrix => {
   console.log("------------------------");
   console.table(matrix);
   console.log(calc(matrix));
});


function calc(matrix){
  let template = matrix[0];
  let result = matrix.reduce( (acc1, items, index1) => {
    if(index1===0) return acc1;
    template = template.reverse();
    acc1 += items.reduce( (acc2, item, index2) => {
        acc2 += Math.abs(template[index2]-item);
        return acc2;
    },0);
    return acc1;
  },0);
  return result;
}


результат:
5e5fed549ce9e339758941.png

ну и песочница:
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы