La matrice cofattore è la trasposizione della matrice adiugata . Gli elementi di questa matrice sono i cofattori della matrice originale.
Il cofattore (cioè l'elemento della matrice cofattore nella riga i e nella colonna j) è il determinante della sottostruttura formata eliminando l'ottava riga e la jesima colonna dalla matrice originale, moltiplicata per (-1) ^ (i + j).
Ad esempio, per la matrice
L'elemento della matrice cofattore nella riga 1 e nella colonna 2 è:
Puoi trovare informazioni su ciò che è determinante di una matrice e su come calcolarle qui .
Sfida
Il tuo obiettivo è produrre la matrice cofattore di una matrice di input.
Nota : sono consentiti incorporati che valutano matrici di cofattori o matrici corrugate, determinanti o simili .
Ingresso
La matrice può essere inserita come argomento della riga di comando, come parametro di funzione, in STDIN
o in qualsiasi modo più appropriato per la lingua utilizzata.
La matrice verrà formattata come un elenco di elenchi, ogni sottoelenco corrispondente a una riga, che contiene i fattori ordinati da sinistra a destra. Le righe sono ordinate dall'alto verso il basso nell'elenco.
Ad esempio, la matrice
a b
c d
sarà rappresentato da [[a,b],[c,d]]
.
Puoi sostituire le parentesi quadre e le virgole con qualcos'altro se si adatta alla tua lingua ed è ragionevole (ad es. ((a;b);(c;d))
)
Le matrici conterranno solo numeri interi (che possono essere negativi) .
Le matrici saranno sempre quadrate (cioè lo stesso numero di righe e colonne).
Si può presumere che l'input sia sempre corretto (ovvero nessun problema di formattazione, nient'altro che numeri interi, nessuna matrice vuota).
Produzione
La matrice cofattore risultante può essere trasmessa a STDOUT
, restituita da una funzione, scritta in un file o qualcosa di simile che si adatta naturalmente alla lingua che si utilizza.
La matrice cofattore deve essere formattata esattamente allo stesso modo delle matrici di input, ad es [[d,-c],[-b,a]]
. Se leggi una stringa, devi restituire / generare una stringa in cui la matrice è formattata esattamente come nell'input. Se si utilizza qualcosa come ad esempio un elenco di elenchi come input, è necessario restituire anche un elenco di elenchi.
Casi test
- Ingresso:
[[1]]
Produzione: [[1]]
- Ingresso:
[[1,2],[3,4]]
Produzione: [[4,-3],[-2,1]]
- Ingresso:
[[-3,2,-5],[-1,0,-2],[3,-4,1]]
Produzione: [[-8,-5,4],[18,12,-6],[-4,-1,2]]
- Ingresso:
[[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]]
Produzione:
[[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]]
punteggio
Questo è code-golf, quindi vince la risposta più breve in byte.