Die Determinante einer 2 mal 2 Matrix
a b
c d
ist gegeben durch ad - bc
.
Ausgehend von einer Ziffernmatrix mit den Dimensionen 2 n mal 2 n , n ≥ 1 wird das Ergebnis ausgegeben, das durch rekursives Berechnen der Determinante jedes 2 mal 2-Unterblocks erhalten wird, bis eine einzelne Zahl erreicht ist.
Zum Beispiel angesichts der Eingabe
3 1 4 1
5 9 2 6
5 3 5 8
9 7 9 3
Nach einem Schritt erhalten wir:
(3*9 - 1*5) (4*6 - 1*2) = 22 22
(5*7 - 3*9) (5*3 - 8*9) 8 -57
Und wenn wir noch einmal iterieren, erhalten wir:
(22*-57 - 22*8) = -1430
Daher sollte die Ausgabe sein -1430
.
Regeln
- Die Elemente der Matrix sind immer einstellige Ganzzahlen, dh 0 bis 9.
- Sie können Eingaben in einem beliebigen Listen- oder Zeichenfolgeformat vornehmen, sofern keine Datenvorverarbeitung erfolgt. Da die Matrix immer quadratisch ist, können Sie Eingaben als einzelne 1D-Liste anstelle einer 2D-Liste vornehmen, wenn Sie dies wünschen.
- Die Eingabe kann über Funktionseingabe, STDIN, Befehlszeilenargument oder die nächstgelegene Alternative erfolgen.
- Die Ausgabe sollte eine einzelne Ganzzahl für die Funktionsausgabe, STDOUT oder die nächstgelegene Alternative sein. Sie können die einzelne Ganzzahl in einer Liste oder Matrix nicht ausgeben.
- Sie können eingebaute Determinanten- und Matrixmanipulationsmethoden verwenden, wenn Ihre Sprache diese unterstützt.
- Ihr Algorithmus muss theoretisch für jede gültige Eingabe funktionieren.
- Es gelten die Standardregeln für Code-Golf .
Testfälle
Die folgenden Testfälle werden als Listen im Python-Stil angegeben:
[[1,0],[0,1]] -> 1
[[1,9],[8,4]] -> -68
[[0,1,2,3],[4,5,6,7],[8,9,0,1],[2,3,4,5]] -> 40
[[3,1,4,1],[5,9,2,6],[5,3,5,8],[9,7,9,3]] -> -1430
[[9,0,0,9],[0,9,9,0],[9,0,9,0],[0,9,0,9]] -> 13122
[[1,0,0,0,0,0,0,0],[2,1,0,0,0,0,0,0],[3,2,1,0,0,0,0,0],[4,3,2,1,0,0,0,0],[5,4,3,2,1,0,0,0],[6,5,4,3,2,1,0,0],[7,6,5,4,3,2,1,0],[8,7,6,5,4,3,2,1]] -> 1
[[7,1,0,5,8,0,1,5],[9,9,6,6,1,2,4,8],[4,8,7,3,8,7,4,7],[4,6,1,9,7,0,1,7],[7,6,7,1,9,4,1,6],[8,0,0,8,5,5,9,9],[4,6,4,8,9,4,8,6],[9,0,8,7,6,2,1,5]] -> 2937504
[[1,2,3,4,5,6,7,8],[2,3,4,5,6,7,8,1],[3,4,5,6,7,8,1,2],[4,5,6,7,8,1,2,3],[5,6,7,8,1,2,3,4],[6,7,8,1,2,3,4,5],[7,8,1,2,3,4,5,6],[8,1,2,3,4,5,6,7]] -> -10549504
[[1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0],[0,1,1,1,1,0,0,1,0,1,1,1,1,1,1,0],[1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,0],[0,1,1,1,1,0,0,0,0,1,1,1,1,1,0,1],[1,0,1,0,1,1,1,0,0,1,1,1,1,0,1,0],[0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0],[1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1],[1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1],[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1],[0,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1],[1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,0],[1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,1,0,0,1,0,1,0,1,1,1,1,1,0,1],[1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1]] -> -8
(Danke an @ MartinBüttner für die Hilfe bei dieser Herausforderung)
[1,0,1,0;1,1,1,1;1,1,1,1;0,0,0,1]
. Die vollständige Determinante davon ist Null, da es zwei identische Zeilen hat. Diese ist daher eine singuläre (dh nicht invertierbare) 4 × 4-Matrix und wird daher von A055165 nicht gezählt. Die hier diskutierte "rekursive" Determinante ist jedoch 1*1-1*0==1
. In der entgegengesetzten Richtung hat die Matrix [0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0]
eine "rekursive" Determinante 0*0-0*0==0
. Seine vollständige Determinante darf jedoch nicht Null sein, da seine Zeilen nur die Zeilen der Identitätsmatrix in einer anderen Reihenfolge sind. und es wird von A055165 gezählt.