Кофакторна матриця - це транспозиція матриці ад'югата . Елементи цієї матриці є кофакторами вихідної матриці.
Кофактор (тобто елемент матриці кофактора в рядку i та стовпчику j) є визначальним фактором підматриці, утвореної шляхом видалення i-го рядка та j-го стовпця з вихідної матриці, помноженої на (-1) ^ (i + j).
Наприклад, для матриці
Елементом матриці кофактора в рядку 1 і стовпці 2 є:
Ви можете знайти інформацію про те, що таке визначник матриці та як їх обчислити тут .
Виклик
Ваша мета - вивести кофакторну матрицю вхідної матриці.
Примітка . Вбудовані модулі, які оцінюють матриці кофактора, або коригуючі матриці, або детермінанти, або щось подібне, дозволені .
Вхідні дані
Матриця може бути введена як аргумент командного рядка, як параметр функції в STDIN
або будь-яким способом, найбільш відповідним для мови, якою ви користуєтесь.
Матриця буде відформатована у вигляді списку списків, кожен підпис має відповідати одному рядку, який містить фактори, упорядковані зліва направо. Рядки впорядковані зверху вниз у списку.
Наприклад, матриця
a b
c d
буде представлений [[a,b],[c,d]]
.
Ви можете замінити квадратні дужки та коми чимось іншим, якщо він відповідає вашій мові та є розумним (наприклад, ((a;b);(c;d))
)
Матриці містять лише цілі числа (які можуть бути негативними) .
Матриці завжди будуть квадратними (тобто однакова кількість рядків і стовпців).
Ви можете припустити, що введення завжди буде правильним (тобто немає проблем із форматуванням, нічого, крім цілих чисел, без порожньої матриці).
Вихідні дані
Отриману матрицю кофактора можна замінити на STDOUT
, повернута з функції, записана у файл або щось подібне, що природно відповідає мові, яку ви використовуєте.
Матриця кофактора повинна бути відформатована точно так само, як задані вхідні матриці, наприклад [[d,-c],[-b,a]]
. Якщо ви читаєте рядок, ви повинні повернути / вивести рядок, у якій матриця відформатована точно так само, як у введенні. Якщо ви використовуєте щось на зразок списку списків у якості вхідних даних, ви також повинні повернути список списків.
Тестові справи
- Вхід:
[[1]]
Вихід: [[1]]
- Вхід:
[[1,2],[3,4]]
Вихід: [[4,-3],[-2,1]]
- Вхід:
[[-3,2,-5],[-1,0,-2],[3,-4,1]]
Вихід: [[-8,-5,4],[18,12,-6],[-4,-1,2]]
- Вхід:
[[3,-2,7,5,0],[1,-1,42,12,-10],[7,7,7,7,7],[1,2,3,4,5],[-3,14,-1,5,-9]]
Вихід:
[[9044,-13580,-9709,23982,-9737],[-1981,1330,3689,-3444,406],[14727,7113,2715,-9792,414],[-28448,-2674,-707,16989,14840],[-2149,2569,-2380,5649,-3689]]
Оцінка балів
Це код-гольф, тому найкоротша відповідь у байтах виграє.