O grupo diédrico é o grupo de simetria do quadrado, ou seja, os movimentos que transformam um quadrado em si mesmo por meio de rotações e reflexões. Consiste em 8 elementos: rotações de 0, 90, 180 e 270 graus e reflexões nos eixos horizontal, vertical e dois diagonais.
As imagens são desta página adorável de Larry Riddle.
Esse desafio é sobre a composição desses movimentos: dados dois movimentos, produza o movimento equivalente a executá-los um após o outro. Por exemplo, fazer o movimento 7 seguido pelo movimento 4 é o mesmo que fazer o movimento 5.
Observe que alternar a ordem para mover 4 e depois mover 7 produz o movimento 6.
Os resultados estão tabulados abaixo; esta é a tabela de Cayley do grupo . Por exemplo, as entradas devem produzir a saída .
Desafio
Seu objetivo é implementar essa operação no menor número de bytes possível, mas, além do código, você também escolhe os rótulos que representam os movimentos de 1 a 8. Os rótulos devem ter 8 números distintos, de 0 a 255 , ou o número 8. caracteres de bytes que seus pontos de código representam.
Seu código receberá dois dos rótulos dos 8 que você escolheu e deve exibir o rótulo que corresponde à sua composição no grupo diédrico .
Exemplo
Digamos que você tenha escolhido os caracteres C, O, M, P, U, T, E, R para os movimentos de 1 a 8, respectivamente. Em seguida, seu código deve implementar esta tabela.
Dadas as entradas E e P, você deve enviar U. Suas entradas sempre serão duas das letras C, O, M, P, U, T, E, R, e sua saída sempre deve ser uma dessas letras.
Tabela de texto para copiar
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.
mente elaborando? Tal como está, posso codificar a matriz no meu código e afirmar que não conta na minha pontuação.