Rolando os dados
Então, eu estava lançando dados há um tempo e pensei em um desafio.
Dado o cubo com uma rede retirada da entrada e uma lista de movimentos, encontre o quadrado na parte inferior no final.
Vou usar esta imagem para os exemplos aqui.
Entrada
Você pega uma sequência com uma lista de movimentos. A sequência contém apenas as letras maiúsculas ASCII N, S, W e E. Elas correspondem a rolar o cubo um passo nessa direção.
Na figura, um N tornaria a face inferior de 6. Nesta imagem, o Norte está longe da câmera, o Sul está na direção, o Leste está à direita e o Oeste está à esquerda.
Você também pode inserir uma sequência no seguinte formato: 1P 2P 3P 4P 5P 6P, em que cada P é uma posição de N, S, W, E, T e B. As notas T e B são inferior e superior.
Os números são a face com esse número e a letra representa a posição em que a face se encontra. Caso não esteja claro, a rede será sempre ordenada pelo número, portanto, 1P 2P 3P 4P 5P 6P, nunca 2B 1T 3N 4S 5W 6E.
A posição na imagem é 1S 2B 3E 4W 5T 6N.
Resultado
Seu programa deve gerar um número representando o lado inferior.
Casos de teste
(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
Outras regras
Você também pode assumir que o cubo está em um plano plano infinito, provavelmente com algum tipo de atrito.
As brechas padrão não são permitidas, apesar de não encontrar nenhuma.
Para entrada inválida, seu código pode fazer qualquer coisa, exceto iniciar o apocalipse.
Como esse programa deve caber nos meus dados, deve ser o menor possível. Conto em bytes, com algumas exceções para idiomas como pastas .
(nothing) -> 2
significa que nenhuma rede é fornecida ou deve haver uma rede em algum lugar?