Lancer les dés
Donc, je jetais des dés il y a un moment et j'ai pensé à un défi.
Étant donné le cube avec un filet pris en entrée et une liste de mouvements, trouvez le carré en bas à la fin.
J'utiliserai cette image pour les exemples ici.
Contribution
Vous prenez une chaîne avec une liste de mouvements. La chaîne contient uniquement les lettres majuscules ASCII N, S, W et E. Celles-ci correspondent au roulement du cube d'un pas dans cette direction.
Dans l'image, un N ferait la face inférieure un 6. Dans cette image, le Nord est loin de la caméra, le Sud est vers, l'Est est à droite et l'Ouest est à gauche.
Vous prenez également une chaîne au format suivant: 1P 2P 3P 4P 5P 6P, où chaque P est une position de N, S, W, E, T et B. T & B sont en bas et en haut.
Les chiffres sont le visage avec ce numéro, et la lettre représente la position du visage. Dans le cas où ce n'est pas clair, le filet sera toujours ordonné par le numéro, donc 1P 2P 3P 4P 5P 6P, jamais 2B 1T 3N 4S 5W 6E.
La position dans l'image est 1S 2B 3E 4W 5T 6N.
Production
Votre programme devrait sortir un nombre représentant le côté inférieur.
Cas de test
(nothing), 1S 2B 3E 4W 5T 6N -> 2
N, 1S 2B 3E 4W 5T 6N -> 6
NS, 1S 2B 3E 4W 5T 6N -> 2
NWS, 1S 2B 3E 4W 5T 6N -> 2
NWSNWS, 1S 2B 3E 4W 5T 6N -> 2
NWSS, 1S 2B 3E 4W 5T 6N -> 3
NNNNNN, 1S 2B 3E 4W 5T 6N -> 5
SNWEEWS, 1N 2T 3E 4W 5B 6S, 6
SNEEWS, 1N 2T 3W 4S 5B 6E, 4
Autres règles
Vous pouvez également supposer que le cube est sur un plan plat infini, probablement avec une sorte de friction.
Les failles standard interdites, même si je n'en trouve aucune.
Pour une entrée invalide, votre code peut faire autre chose que démarrer l'apocalypse.
Parce que ce programme devrait tenir sur mes dés, il devrait être aussi petit que possible. Je compte en octets, à quelques exceptions près pour les langues comme les dossiers .
(nothing) -> 2
signifie-t-il qu'aucun filet n'est fourni, ou devrait-il y avoir un filet quelque part?