Scrivi un programma o una funzione che includa una griglia di testo 4 × 4 composta esattamente da 4 A
', 4 B
', 4 C
'e 4 D
', come ad esempio:
ACDC
BBCA
BADD
ABCD
I ABCD
's possono essere in qualsiasi disposizione, ma ci saranno sempre 4 di ciascuno. Si può presumere che l'input sia valido. Se lo si desidera, si può anche supporre che abbia una nuova riga finale e / o che arrivi come una riga in ordine di lettura, ad es ACDCBBCABADDABCD
. Puoi anche sostituire i personaggi ABCD
con 0123
o 1234
rispettivamente, se lo desideri (ma questo è tutto).
Emette un valore veritiero se la griglia del testo ha qualche forma di simmetria riflettente o rotazionale. In particolare:
Se esiste una linea orizzontale centrale di simmetria. per esempio
BACD BACD BACD \___ bottom mirrors top BACD /
Se esiste una linea verticale centrale di simmetria. per esempio
BCCB DAAD CAAC BDDB \/___ right mirrors left
Se esiste una linea diagonale di simmetria (in entrambe le direzioni). per esempio
___ diagonally mirrored / ABDC BACD DCAB CDBA \___ diagonally mirrored
Se esiste una simmetria di rotazione di 90 °. per esempio
BDAB ACCD same if rotated 90 degrees (or 180 or 270) DCCA BADB
Se esiste una simmetria di rotazione di 180 °. per esempio
DBCA BDCA same if rotated 180 degrees ACDB ACBD
(Notare che la simmetria traslazionale non entra in gioco qui.)
Emette un valore falso se la griglia non ha una delle simmetrie sopra menzionate. ad esempio la prima griglia di esempio.
Vince il codice più breve in byte.