Le groupe dièdre est le groupe de symétrie du carré, c'est-à-dire les mouvements qui transforment un carré à lui-même via des rotations et des réflexions. Il se compose de 8 éléments: des rotations de 0, 90, 180 et 270 degrés et des réflexions sur les axes horizontal, vertical et deux diagonaux.
Les images sont toutes issues de cette jolie page de Larry Riddle.
Ce défi consiste à composer ces mouvements: compte tenu de deux mouvements, sortez le mouvement qui équivaut à les faire l'un après l'autre. Par exemple, faire le coup 7 suivi du coup 4 revient au même que faire le coup 5.
Notez que changer l'ordre de déplacer 4 puis déplacer 7 produit le mouvement 6 à la place.
Les résultats sont présentés dans le tableau ci-dessous; c'est la table Cayley du groupe . Ainsi, par exemple, les entrées devraient produire la sortie .
Défi
Votre objectif est d'implémenter cette opération dans le moins d'octets possible, mais en plus du code, vous choisissez également les étiquettes qui représentent les déplacements de 1 à 8. Les étiquettes doivent être constituées de 8 nombres distincts de 0 à 255 , ou les 8 -octets représentent leurs points de code.
Votre code recevra deux des étiquettes parmi les 8 que vous avez choisies et doit sortir l'étiquette qui correspond à leur composition dans le groupe dièdre .
Exemple
Supposons que vous ayez choisi les caractères C, O, M, P, U, T, E, R pour les mouvements 1 à 8 respectivement. Ensuite, votre code doit implémenter cette table.
Étant donné les entrées E et P, vous devez sortir U. Vos entrées seront toujours deux des lettres C, O, M, P, U, T, E, R, et votre sortie devrait toujours être l'une de ces lettres.
Tableau de texte pour la copie
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.
l'esprit d'élaborer? En l'état, je peux coder en dur la matrice dans mon code et prétendre qu'elle ne compte pas dans mon score.