Tengo una caja de música con manivela que puede tocar una serie de cuatro notas. Cuando giro la manivela, arranca una de las cuatro cuerdas, dependiendo de la posición de la manivela y la dirección de la vuelta. Cuando la manivela se gira hacia el norte, la caja (con sus cadenas numeradas del 1 al 4) se ve así:
1 | 2
|
O
4 3
A partir de ahí, puedo girar la manivela en el sentido de las agujas del reloj para arrancar la cadena # 2 y apuntar la manivela hacia el este:
1 2
O---
4 3
Alternativamente, también podría haber girado la manivela en sentido antihorario desde el norte para tocar la cuerda # 1 y terminar con una manivela apuntando hacia el oeste:
1 2
---O
4 3
En cualquier momento, la caja puede tocar una de dos notas: la siguiente nota disponible en el sentido de las agujas del reloj o la siguiente nota en el sentido contrario.
Desafío
Su desafío es escribir un programa o función que acepte una cadena no vacía de valores de nota (es decir, números a 1
través 4
) y determinar si es posible reproducir esa secuencia de notas en la caja de música. Produzca un resultado verdadero o falso para indicar la jugabilidad o no jugabilidad de la entrada.
Algunas notas:
La entrada no hace suposiciones sobre la posición inicial de inicio. Las entradas
214
(comenzando en el este y moviéndose estrictamente en sentido antihorario) y234
(comenzando en el norte y moviéndose estrictamente en sentido horario) y ambas son válidas.La manivela puede moverse libremente en cualquier dirección después de cada nota. Es posible una serie de la misma nota (por ejemplo,
33333
) moviéndose hacia adelante y hacia atrás a través de una cadena. La serie1221441
es perfectamente jugable (comenzando hacia el oeste, moviéndose dos pasos en sentido horario, luego tres pasos en sentido antihorario, luego dos pasos en sentido horario).
Muestras
Algunos true
casos:
1
1234
1221
3333
143332
22234
2234
22214
1221441
41233
Algunos false
casos:
13 (note 3 is never available after note 1)
1224 (after `122`, the crank must be north, so 4 is not playable)
121 (after `12` the crank is east; 1 is not playable)
12221 (as above, after `1222` the crank is east)
43221