Nota che questa sfida non richiede la gestione o la comprensione di numeri complessi.
Data una matrice quadrata non vuota in cui ogni elemento è un elenco intero a due elementi (Re, Im), determinare (fornendo qualsiasi valore di verità / falsità o due valori coerenti) se questo rappresenta una matrice eremitica.
Si noti che l'input è un array 3D di numeri interi; non una matrice 2D di numeri complessi. Se la tua lingua non può prendere direttamente un array 3D, puoi prendere un elenco semplice (e la forma n × n o n × n × 2 se ciò aiuta).
Una matrice è eremitica se è uguale alla sua trasposizione coniugata . In altre parole, se lo capovolgi attraverso la diagonale superiore sinistra a quella inferiore destra e annulli il secondo elemento di tutte le liste foglia a due elementi, è identico alla matrice di input. Nota che l'ordine di capovolgere e negare è irrilevante, quindi puoi prima negare e poi capovolgere.
Esempio di guida
Questo esempio usa JSON con spazi vuoti superflui per facilitare la lettura:
[[ [2, 0] , [2, 1] , [4, 0] ],
[ [2,-1] , [3, 0] , [0, 1] ],
[ [4, 0] , [0,-1] , [1, 0] ]]
Trasposizione (capovolgi diagonale NO - SE):
[[ [2, 0] , [2,-1] , [4, 0] ],
[ [2, 1] , [3, 0] , [0,-1] ],
[ [4, 0] , [0, 1] , [1, 0] ]]
Annulla i secondi elementi delle liste foglia:
[[ [2, 0] , [2, 1] , [4, 0] ],
[ [2,-1] , [3, 0] , [0, 1] ],
[ [4, 0] , [0,-1] , [1, 0] ]]
Poiché questo è identico all'input, la matrice è eremitica.
Casi test
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]]]
Non-Hermitiana
[[[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]]]