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 1attraverso 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 truecasi:
1
1234
1221
3333
143332
22234
2234
22214
1221441
41233
Alcuni falsecasi:
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