Как проверить, симметрична ли входная матрица?

#javascript

Вопрос:

Приведенный ниже код принимает матрицу ( MAT ) и транспонирует матрицу, вызывает ее array . Определение симметричной матрицы состоит в том, что она должна быть квадратной матрицей, и элементы в данной матрице по сравнению с транспонированной должны быть одинаковыми.

Приведенная ниже матрица и транспонированная матрица должны выводиться false , если проверена симметрия.

Сначала я создал оператор if, чтобы проверить, являются ли MAT[j][i] и array[j][i] одинаковыми, но продолжаю получать неправильный ответ. Это неправильно-проверять все элементы вместе. Может ли кто-нибудь помочь с этим?

Спасибо!

 const symmetricMatrix = function (MAT) {
  let array = [];
  for (let i = 0; i < MAT.length; i  ) {
    array.push([]);
    for (let j = 0; j < MAT.length; j  ) {
      array[i].push(MAT[j][i]);

    }
  }

  
  return array;
};

console.log(
  symmetricMatrix(
    (MAT = [
      [1, 3, 1],
      [-1, 1, 4],
      [2, 1, 0],
    ])
  )
); 

Ответ №1:

Сначала вы можете создать копию матрицы, а затем транспонировать ее, а затем проверить, имеет ли она тот же элемент в этом индексе.

 const symmetricMatrix = function (mat) {
  const copy = Array.from(mat, (_) => []);

  for (let i = 0; i < mat.length; i  )
    for (let j = 0; j < mat.length; j  ) 
      copy[i][j] = mat[j][i];

  for (let i = 0; i < mat.length; i  )
    for (let j = 0; j < mat.length; j  )
      if (copy[i][j] != mat[i][j]) return false;

  return true;
};

const matrix = [
  [1, 3, 1],
  [-1, 1, 4],
  [2, 1, 0],
];
const matrix2 = [
  [1, -1, 2],
  [-1, 1, 1],
  [2, 1, 0],
];
console.log(symmetricMatrix(matrix));
console.log(symmetricMatrix(matrix2));