Molti di noi hanno familiarità con il gioco Tron. Controlli un "ciclo di luce" posizionato su una griglia. Il ciclo di luce si sposta sempre in avanti (anche se controlli la direzione) e lascia dietro di sé una scia permanente. Se ti imbatti in un sentiero, ti schianti!
L'obiettivo qui è determinare se un determinato percorso è un ciclo valido, cioè ritorna al suo punto di partenza senza "crash". Per fare ciò, supponiamo di iniziare dal punto (0,0). Viene fornito un input nella forma N2E1S2W1, con una serie di direzioni cardinali ( Nis north, Eis easte così via), ciascuna seguita dalla distanza per percorrere quella direzione. In questo esempio, viaggeresti
N2 : North 2 to (0,2)
E1 : East 1 to (1,2)
S2 : South 2 to (1,0)
W1 : West 1 to (0,0)
Un percorso è considerato valido se termina (0,0)senza visitare altre coordinate più di una volta (visita (0,0)esattamente due volte. Una volta all'inizio e una volta alla fine). Ricorda che nell'esempio sopra, per andare da (0,0)a (0,2), visitiamo necessariamente anche noi (0,1).
Altri esempi:
input -> output
N1E1S1W1 -> true
N1E1N1E1S2W2 -> true
N1S1E1W1 -> false // Visits (0,0) 3 times
N4E2S2W4S2E2 -> false // Visits (0,2) twice
N3E2S3 -> false // Does not return to (0,0)
N1S1 -> anything //I don't care how you evaluate this case
Il tuo output può essere in qualsiasi forma purché fornisca lo stesso output per qualsiasi valore di verità o falsità.
L'input può essere preso come una stringa o come un elenco di caratteri, sia nella forma S1N2E3... o SNNEEE... Non c'è anche alcun limite rigido per la dimensione della griglia, ma si supponga che l'input non abbia troppopieno. Fintanto che il codice è fondamentalmente valido, non è fondamentale gestire casi simili N99999999999999.
NOTA: È possibile valutare i casi N1S1, E1W1, S1N1, e W1E1tuttavia si desidera. Sono percorsi tecnicamente validi, ma vanno contro lo spirito "Tron" della sfida.
punteggio
Questo è code-golf , quindi vince la risposta più breve!
Ncome 1j, Ecome 1, Scome -1je Wcome -1?
N99999999999999
N1S1dovrebbe essere vero per essere coerente con le tue definizioni perché raggiunge(0, 0)due volte e(0, 1)una volta, il che è valido sotto la tua definizione.