Una hormiga camina a lo largo de los bordes (no caras) de un cubo de estructura metálica. Cada vértice que encuentra le presenta una bifurcación desde la cual se ramifican dos bordes nuevos. La hormiga elige en qué dirección girar - lefto right. Estas direcciones son relativas a la hormiga, que se enfrenta al vértice y está fuera del cubo. Su objetivo es determinar, a partir de la secuencia de left/ rightelecciones que tomó la hormiga, si termina en la misma posición en que comenzó.
Por ejemplo, si la hormiga gira cuatro veces hacia la izquierda ( left left left left), habrá recorrido un cuadrado en el sentido contrario a las agujas del reloj y ha terminado en el mismo lugar donde comenzó. Pero, si se va left left left left right, terminará en un lugar diferente en el cubo. Además, si se va left right right right left, termina en su borde inicial pero mirando hacia el vértice opuesto, que no cuenta como la misma posición.
El camino de la hormiga podría repetir los bordes, incluido el borde en el que comenzó, pero lo que importa es dónde termina después de toda la secuencia.
Escriba una función con nombre que tome la secuencia de giros de la hormiga y muestre si la hormiga está de vuelta en su posición inicial después de la secuencia. Asignar una función sin nombre a una variable es suficiente para convertirla en una función con nombre.
(Editar: si su idioma no puede crear una función con nombre, puede implementar la función con entradas y salidas a través de STDIN / impresión o la pila. Si eso no es posible, conviértalo en un fragmento en el que la entrada y la salida se guardan en variables.)
Entrada
Una secuencia de left/ rightdecisiones de duración 0a 31inclusiva, representada en un formato de su elección. Esto podría ser una cadena de letras R/ L, una lista de números 1/ -1o una matriz de booleanos. Nada cursi como tener nombres de métodos o cadenas útiles para su código.
Publique los casos de prueba en su formato si es diferente de los casos de prueba a continuación.
Salida
True/ False, 0/ 1o los análogos en su idioma.
Criterios ganadores
Pocos bytes ganan. Recuerde, debe asignar una función con nombre. Puede tener código fuera de la función, pero esos bytes también cuentan. Su función debe comportarse correctamente si se llama varias veces.
Casos de prueba
True casos (uno por línea, el segundo es una lista vacía):
1 1 1 1
-1 -1 -1 -1
1 -1 1 -1 1 -1
1 1 -1 -1 1 1 -1 -1
-1 1 1 -1 -1 1 1 -1
1 1 1 -1 -1 -1 -1 1
1 -1 -1 1 -1 -1
1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1
-1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
False casos (uno por línea):
1
1 1
1 1 1
-1 1
1 -1 -1 -1 1
1 -1 -1 1 1
-1 1 -1 1
1 1 1 1 -1
-1 -1 1 -1 1 -1 -1 1
1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1
Aquí están los mismos casos de prueba con L'sy R' s.
True casos:
RRRR
LLLL
RLRLRL
RRLLRRLL
LRRLLRRL
RRRLLLLR
RLLRLL
RRRRLLLLRLLRLL
LLLRLLRRLRLRRRRRRRRRRRRRRRRR
False casos:
R
RR
RRR
LR
RLLLR
RLLRR
LRLR
RRRRL
LLRLRLLR
RLRRRRLLLRRLLL
Desafío de crédito adicional
Lo mismo, pero con un dodecaedro en lugar de un cubo. Ver Hunt the Wumpus para ideas.