Lancio dei dadi
Quindi, stavo lanciando i dadi qualche tempo fa e ho pensato a una sfida.
Dato il cubo con una rete presa dall'input e un elenco di mosse, trova il quadrato in fondo alla fine.
Userò questa immagine per gli esempi qui.
Ingresso
Prendi una stringa con un elenco di mosse. La stringa contiene solo le lettere ASCII maiuscole N, S, W ed E. Queste corrispondono al rotolamento del cubo di un passo in quella direzione.
Nella foto, una N renderebbe la faccia inferiore a 6. In questa immagine, il Nord è lontano dalla fotocamera, il Sud è verso, l'Est è giusto e l'Ovest è lasciato.
Prendi anche una stringa nel seguente formato: 1P 2P 3P 4P 5P 6P, dove ogni P è una posizione tra N, S, W, E, T e B. T & B sono in basso e in alto.
I numeri sono la faccia con quel numero e la lettera rappresenta la posizione in cui si trova la faccia. Nel caso in cui non sia chiara, la rete sarà sempre ordinata dal numero, quindi 1P 2P 3P 4P 5P 6P, mai 2B 1T 3N 4S 5W 6E.
La posizione nell'immagine è 1S 2B 3E 4W 5T 6N.
Produzione
Il tuo programma dovrebbe generare un numero che rappresenta il lato inferiore.
Casi 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
Altre regole
Puoi anche supporre che il cubo si trovi su un piano piatto infinito, probabilmente con una sorta di attrito.
Scappatoie standard non consentite, anche se non riesco a trovarne.
Per input non validi, il tuo codice potrebbe fare qualsiasi cosa tranne avviare l'apocalisse.
Poiché questo programma dovrebbe adattarsi ai miei dadi, dovrebbe essere il più piccolo possibile. Conto in byte, con alcune eccezioni per le lingue come Cartelle .
(nothing) -> 2
indica che non viene fornita alcuna rete o dovrebbe esserci una rete lì da qualche parte?