La matriz de cofactor es la transposición de la matriz adjugada . Los elementos de esta matriz son los cofactores de la matriz original.
El cofactor (es decir, el elemento de la matriz de cofactor en la fila i y la columna j) es el determinante de la submatriz formada al eliminar la i-ésima fila y la columna jth de la matriz original, multiplicada por (-1) ^ (i + j).
Por ejemplo, para la matriz
El elemento de la matriz de cofactores en la fila 1 y la columna 2 es:
Puede encontrar información sobre cuál es el determinante de una matriz y cómo calcularlos aquí .
Desafío
Su objetivo es generar la matriz de cofactor de una matriz de entrada.
Nota : Están permitidos los elementos integrados que evalúan las matrices de cofactores, o las matrices adyuvantes, o los determinantes o cualquier cosa similar .
Entrada
La matriz se puede incorporar como un argumento de línea de comando, como un parámetro de función, de la STDIN
manera más apropiada para el idioma que utilice.
La matriz se formateará como una lista de listas, cada sublista correspondiente a una fila, que contiene factores ordenados de izquierda a derecha. Las filas se ordenan de arriba a abajo en la lista.
Por ejemplo, la matriz
a b
c d
será representado por [[a,b],[c,d]]
.
Puede reemplazar los corchetes y las comas con algo más si se ajusta a su idioma y es razonable (por ejemplo ((a;b);(c;d))
)
Las matrices solo contendrán enteros (que pueden ser negativos) .
Las matrices siempre serán cuadradas (es decir, el mismo número de filas y columnas).
Puede suponer que la entrada siempre será correcta (es decir, sin problemas de formato, nada más que enteros, sin matriz vacía).
Salida
La matriz de cofactor resultante puede ser expulsada STDOUT
, devuelta desde una función, escrita en un archivo o algo similar que naturalmente se adapte al lenguaje que utiliza.
La matriz de cofactor debe formatearse exactamente de la misma manera que se dan las matrices de entrada, por ejemplo [[d,-c],[-b,a]]
. Si lee una cadena, debe devolver / generar una cadena en la que la matriz esté formateada exactamente como en la entrada. Si utiliza algo como, por ejemplo, una lista de listas como entrada, también debe devolver una lista de listas.
Casos de prueba
- Entrada:
[[1]]
Salida: [[1]]
- Entrada:
[[1,2],[3,4]]
Salida: [[4,-3],[-2,1]]
- Entrada:
[[-3,2,-5],[-1,0,-2],[3,-4,1]]
Salida: [[-8,-5,4],[18,12,-6],[-4,-1,2]]
- Entrada:
[[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]]
Salida:
[[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]]
Puntuación
Este es el código de golf, por lo que gana la respuesta más corta en bytes.