Beachten Sie, dass für diese Herausforderung keine komplexen Zahlen verarbeitet oder verstanden werden müssen.
Bei einer nicht leeren quadratischen Matrix, in der jedes Element eine ganzzahlige Liste mit zwei Elementen (Re, Im) ist, bestimmen Sie (unter Angabe von Wahrheits- / Falschheitswerten oder zwei konsistenten Werten), ob dies eine hermitische Matrix darstellt.
Beachten Sie, dass die Eingabe ein 3D-Array von Ganzzahlen ist. kein 2D-Array komplexer Zahlen. Wenn Ihre Sprache ein 3D-Array nicht direkt aufnehmen kann, können Sie eine flache Liste (und die Form n × n oder n × n × 2, falls dies hilfreich ist) verwenden.
Eine Matrix ist hermitisch, wenn sie ihrer eigenen konjugierten Transponierung entspricht . Mit anderen Worten, wenn Sie es über die Diagonale von links oben nach rechts unten drehen und das zweite Element aller Blattlisten mit zwei Elementen negieren, ist es identisch mit der Eingabematrix. Beachten Sie, dass die Reihenfolge des Umdrehens und Negierens irrelevant ist. Sie können also zuerst negieren und anschließend umdrehen.
Walk-through-Beispiel
In diesem Beispiel wird JSON mit überflüssigen Leerzeichen verwendet, um das Lesen zu vereinfachen:
[[ [2, 0] , [2, 1] , [4, 0] ],
[ [2,-1] , [3, 0] , [0, 1] ],
[ [4, 0] , [0,-1] , [1, 0] ]]
Transponieren (Umblättern der NW-SE-Diagonale):
[[ [2, 0] , [2,-1] , [4, 0] ],
[ [2, 1] , [3, 0] , [0,-1] ],
[ [4, 0] , [0, 1] , [1, 0] ]]
Negiere zweite Elemente von Blattlisten:
[[ [2, 0] , [2, 1] , [4, 0] ],
[ [2,-1] , [3, 0] , [0, 1] ],
[ [4, 0] , [0,-1] , [1, 0] ]]
Da dies mit der Eingabe identisch ist, ist die Matrix hermitisch.
Testfälle
Hermitian
[[[2,0],[2,1],[4,0]],[[2,-1],[3,0],[0,1]],[[4,0],[0,-1],[1,0]]]
[[[1,0],[2,0]],[[2,0],[1,0]]]
[[[1,0],[2,-3]],[[2,3],[1,0]]]
[[[42,0]]]
Nicht-Hermitianer
[[[2,0],[2,1],[4,0]],[[2,-1],[3,0],[0,1]],[[4,0],[0,-1],[1,-1]]]
[[[0,1],[0,2]],[[0,2],[0,1]]]
[[[1,0],[2,3]],[[2,3],[1,0]]]
[[[3,2]]]