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 ( N
es north
, E
es 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 W1E1
no 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.
fuente
N1S1
debe 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.N
as1j
,E
as1
,S
as-1j
yW
as-1
?N99999999999999
Respuestas:
Pyth ,
4439 bytesBanco de pruebas .
fuente
JavaScript,
247200 bytesn
es una función de cadena de entradas
que devuelve1
verdadero y0
falsoAquí hay una versión sin golf para referencia / explicación:
fuente
contains
no es una función en ningún dialecto de javascript. ¿Podría especificar el dialecto?Python 3 ,
236161150 bytesPruébalo en línea!
-75 bytes gracias a Leaky Nun
-11 bytes gracias a Leaky Nun O, si se nos permite tomar la entrada como una lista de números complejos decodificados de longitud de ejecución:
Python 2 ,
8573 bytesPruébalo en línea!
-12 bytes gracias al Sr. Xcoder / -9 bytes gracias a Leaky Nun (fusionada en una edición)
Esto me parece demasiado largo jajaja
fuente
Jalea ,
1412 bytesEsta es mi primera vez jugando al golf en Jelly. Las sugerencias son bienvenidas.
La entrada es como una matriz de
[direction, distance]
pares, donde la dirección se da como un número complejo.Explicación:
fuente
Retina , 86 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Explicación:
Convierte los números a unarios.
Run-length decodifica las letras.
N111
necesita convertirse enNNN
, por lo que se resta uno de cada número unario y luego cada 1 duplica la letra anterior.Genere todos los prefijos (es decir, puntos en la ruta) como líneas separadas. Se antepone un espacio para evitar problemas con las líneas vacías.
Ordene todas las letras de cada línea en orden y luego elimine los pares coincidentes. Terminamos con un código único para cualquier punto dado en la cuadrícula.
Verifique una de dos cosas: a) el último punto no termina en un espacio (es decir, el bucle no se cerró), o dos puntos duplicados en la ruta. Si la ruta es válida, todas las comprobaciones fallan y el resultado es cero.
Invierte el resultado.
fuente
Perl, 140
Funciona con entrada de cadena. Quizás pueda acortar con array, pero lo dudo. Feliz por cualquier ayuda de golf :)
fuente