Eu tenho uma caixa de música com manivela que pode tocar uma série de quatro notas. Quando eu giro a manivela, ela puxa uma das quatro cordas, dependendo da posição da manivela e da direção da curva. Quando a manivela é virada para o norte, a caixa (com suas cordas numeradas de 1 a 4) fica assim:
1 | 2
|
O
4 3
A partir daí, eu posso girar a manivela no sentido horário para puxar a corda # 2 e apontar a manivela para o leste:
1 2
O---
4 3
Como alternativa, eu também poderia ter girado a manivela no sentido anti-horário do norte para tocar a corda nº 1 e terminar com uma manivela apontando para oeste:
1 2
---O
4 3
A qualquer momento, a caixa pode tocar uma das duas notas: a próxima nota disponível no sentido horário ou a próxima nota no sentido anti-horário.
Desafio
Seu desafio é escrever um programa ou função que aceite uma seqüência de valores de notas não vazia (ou seja, números 1
até 4
) e determinar se é possível reproduzir essa sequência de notas na caixa de música. Produza um resultado verdadeiro ou falso para indicar a capacidade de reprodução ou não da entrada.
Algumas notas:
A entrada não faz suposições sobre a posição inicial inicial. As entradas
214
(começando no leste e movendo-se estritamente no sentido anti-horário) e234
(começando no norte e movendo-se estritamente no sentido horário) e ambas válidas.A manivela pode se mover livremente em qualquer direção após cada nota. Uma série da mesma nota é possível (por exemplo,
33333
) movendo-se para frente e para trás através de uma corda. A série1221441
é perfeitamente reproduzível (começando no oeste, movendo-se duas etapas no sentido horário, depois três etapas no sentido anti-horário e depois duas etapas no sentido horário).
Amostras
Alguns true
casos:
1
1234
1221
3333
143332
22234
2234
22214
1221441
41233
Alguns 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