Muchos de nosotros estamos familiarizados con el juego Tron. Usted controla un "ciclo de luz" colocado en una cuadrícula. El ciclo de luz siempre se mueve hacia adelante (aunque controlas la dirección) y deja un rastro permanente detrás de él. Si te encuentras con un sendero, ¡te estrellas!
El objetivo aquí es determinar si una ruta dada es un bucle válido, es decir, vuelve a su punto de partida sin "bloquearse". Para hacer esto, asumimos que comenzamos en el punto (0,0). Se proporciona una entrada en el formulario N2E1S2W1, con una serie de direcciones cardinales ( Nes north, Ees east, etc.), cada una seguida de la distancia para recorrer esa dirección. En este ejemplo, viajarías
N2 : North 2 to (0,2)
E1 : East 1 to (1,2)
S2 : South 2 to (1,0)
W1 : West 1 to (0,0)
Una ruta se considera válida si termina (0,0)sin visitar ninguna otra coordenada más de una vez (visita (0,0)exactamente dos veces. Una al comienzo y otra al final). Tenga en cuenta que en el ejemplo anterior, para llegar de (0,0)a (0,2), necesariamente visitar (0,1)también.
Otros ejemplos:
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
Su salida puede ser de cualquier forma siempre que proporcione la misma salida para cualquier valor verdadero o falso.
La entrada se puede tomar como una cadena o como una lista de caracteres, ya sea en forma S1N2E3... o SNNEEE... Tampoco hay un límite estricto en el tamaño de la cuadrícula, pero suponga que la entrada no desbordará nada. Mientras el código sea fundamentalmente sólido, no es crucial manejar casos como este N99999999999999.
NOTA: Es posible evaluar los casos N1S1, E1W1, S1N1, y W1E1no obstante le gustaría. Son caminos técnicamente válidos, pero van en contra del espíritu "Tron" del desafío.
Puntuación
Este es el código de golf , por lo que gana la respuesta más corta.
Nas 1j, Eas 1, Sas -1jy Was -1?
N99999999999999
N1S1debe ser verdadero para ser coherente con sus definiciones porque alcanza(0, 0)dos veces y(0, 1)una vez, lo cual es válido según su definición.