La matrice cofactorielle est la transposition de la matrice adjointe . Les éléments de cette matrice sont les cofacteurs de la matrice d'origine.
Le cofacteur (c'est-à-dire l'élément de la matrice du cofacteur à la ligne i et à la colonne j) est le déterminant de la sous-matrice formée en supprimant la ième ligne et la jième colonne de la matrice d'origine, multipliée par (-1) ^ (i + j).
Par exemple, pour la matrice
L'élément de la matrice du cofacteur à la ligne 1 et à la colonne 2 est:
Vous pouvez trouver des informations sur le déterminant d'une matrice et comment les calculer ici .
Défi
Votre objectif est de sortir la matrice de cofacteur d'une matrice d'entrée.
Remarque : Les éléments intégrés qui évaluent les matrices de cofacteurs, ou les matrices d'ajustement, ou les déterminants ou quelque chose de similaire sont autorisés .
Contribution
La matrice peut être entrée comme argument de ligne de commande, comme paramètre de fonction, dans STDIN
ou de la manière la plus appropriée pour le langage que vous utilisez.
La matrice sera formatée comme une liste de listes, chaque sous-liste correspondant à une ligne, qui contient des facteurs ordonnés de gauche à droite. Les lignes sont classées de haut en bas dans la liste.
Par exemple, la matrice
a b
c d
sera représenté par [[a,b],[c,d]]
.
Vous pouvez remplacer les crochets et les virgules par autre chose si cela correspond à votre langue et est raisonnable (par exemple ((a;b);(c;d))
)
Les matrices ne contiendront que des entiers (qui peuvent être négatifs) .
Les matrices seront toujours carrées (c'est-à-dire le même nombre de lignes et de colonnes).
Vous pouvez supposer que l'entrée sera toujours correcte (c'est-à-dire pas de problème de formatage, rien d'autre que des entiers, pas de matrice vide).
Production
La matrice de cofacteur résultante peut être sortie STDOUT
, renvoyée par une fonction, écrite dans un fichier ou tout autre élément similaire qui convient naturellement à la langue que vous utilisez.
La matrice du cofacteur doit être formatée exactement de la même manière que les matrices d'entrée sont données, par exemple [[d,-c],[-b,a]]
. Si vous lisez une chaîne, vous devez retourner / sortir une chaîne dans laquelle la matrice est formatée exactement comme dans l'entrée. Si vous utilisez par exemple une liste de listes comme entrée, vous devez également renvoyer une liste de listes.
Cas de test
- Contribution:
[[1]]
Production: [[1]]
- Contribution:
[[1,2],[3,4]]
Production: [[4,-3],[-2,1]]
- Contribution:
[[-3,2,-5],[-1,0,-2],[3,-4,1]]
Production: [[-8,-5,4],[18,12,-6],[-4,-1,2]]
- Contribution:
[[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]]
Production:
[[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]]
Notation
Il s'agit de code-golf, donc la réponse la plus courte en octets l'emporte.