Il gruppo diedrico è il gruppo di simmetria del quadrato, ovvero le mosse che trasformano un quadrato in se stesso tramite rotazioni e riflessioni. È composto da 8 elementi: rotazioni di 0, 90, 180 e 270 gradi e riflessi sugli assi orizzontale, verticale e due diagonali.
Le immagini provengono tutte da questa adorabile pagina di Larry Riddle.
Questa sfida riguarda la composizione di queste mosse: date due mosse, produce la mossa che equivale a farle una dopo l'altra. Ad esempio, fare la mossa 7 seguita dalla mossa 4 equivale a fare la mossa 5.
Nota che cambiando l'ordine di spostare 4, quindi spostare 7, si ottiene invece la mossa 6.
I risultati sono riportati di seguito; questa è la tabella Cayley del gruppo . Quindi, ad esempio, input dovrebbero produrre l'uscita .
Sfida
Il tuo obiettivo è implementare questa operazione nel minor numero di byte possibile, ma oltre al codice, scegli anche le etichette che rappresentano le mosse da 1 a 8. Le etichette devono essere 8 numeri distinti da 0 a 255 o 8 -byte caratteri che rappresentano i loro punti di codice.
Al tuo codice verranno assegnate due delle etichette tra le 8 che hai scelto e deve generare l'etichetta corrispondente alla loro composizione nel gruppo diedrico .
Esempio
Supponi di aver scelto i caratteri C, O, M, P, U, T, E, R per le mosse da 1 a 8 rispettivamente. Quindi, il codice dovrebbe implementare questa tabella.
Dati gli input E e P, dovresti produrre U. I tuoi input saranno sempre due delle lettere C, O, M, P, U, T, E, R e il tuo output dovrebbe essere sempre una di queste lettere.
Tabella di testo per la copia
1 2 3 4 5 6 7 8
2 3 4 1 8 7 5 6
3 4 1 2 6 5 8 7
4 1 2 3 7 8 6 5
5 7 6 8 1 3 2 4
6 8 5 7 3 1 4 2
7 6 8 5 4 2 1 3
8 5 7 6 2 4 3 1
Your choice of labels doesn't count against your code length.
elaborando la mente? Allo stato attuale, posso codificare la matrice nel mio codice e affermare che non conta per il mio punteggio.