#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));