Ho un carillon a manovella che può suonare una serie di quattro note. Quando giro la pedivella, pizzica una delle quattro stringhe, a seconda della posizione della pedivella e della direzione della svolta. Quando la pedivella viene girata verso nord, la scatola (con le sue stringhe numerate da 1 a 4) si presenta così:
1 | 2
|
O
4 3
Da lì, posso girare la manovella in senso orario per pizzicare la corda n. 2 e puntare la manovella verso est:
1 2
O---
4 3
In alternativa, avrei anche potuto girare la pedivella in senso antiorario da nord per suonare la corda n. 1 e terminare con una manovella che punta verso ovest:
1 2
---O
4 3
In qualsiasi momento, quindi, la casella può suonare una delle due note: la nota successiva disponibile in senso orario o la nota successiva in senso antiorario.
Sfida
La sfida è quella di scrivere un programma o una funzione che accetta una stringa non vuota di valori di note (ad esempio, numeri 1
attraverso 4
) e determinare se è mai possibile giocare quella sequenza di note sul carillon. Produrre un risultato veritiero o falso per indicare la giocabilità o la non giocabilità dell'input.
Alcune note:
L'ingresso non fa ipotesi sulla posizione iniziale iniziale. Gli ingressi
214
(che iniziano a est e si muovono rigorosamente in senso antiorario) e234
(che iniziano a nord e si muovono rigorosamente in senso orario) ed entrambi sono validi.La pedivella può muoversi liberamente in entrambe le direzioni dopo ogni nota. Una serie della stessa nota è possibile (ad es.
33333
) Spostandosi avanti e indietro su una stringa. La serie1221441
è perfettamente giocabile (partendo da ovest, muovendosi in senso orario di due passi, quindi in senso antiorario di tre passi, quindi in senso orario di due passi).
Campioni
Alcuni true
casi:
1
1234
1221
3333
143332
22234
2234
22214
1221441
41233
Alcuni false
casi:
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