Матрица кофактора - это транспонированная матрица адъютатов . Элементы этой матрицы являются кофакторами исходной матрицы.
Кофактор (т.е. элемент матрицы кофактора в строке i и столбце j) является определителем подматрицы, образованной удалением i-й строки и j-го столбца из исходной матрицы, умноженной на (-1) ^ (i + j).
Например, для матрицы
Элемент матрицы кофактора в строке 1 и столбце 2:
Вы можете найти информацию о том, что определитель матрицы и как их рассчитать, здесь .
Вызов
Ваша цель - вывести матрицу кофактора входной матрицы.
Примечание : Встроенные модули, оценки матриц кофактора или adjugate матрицы, или детерминанты или что - нибудь подобное будут разрешены .
вход
Матрица может быть введена как аргумент командной строки, как параметр функции, 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]]
счет
Это код-гольф, поэтому выигрывает самый короткий ответ в байтах.