Ich habe eine kurbelbetätigte Spieluhr, die eine Serie von vier Noten spielen kann. Wenn ich die Kurbel drehe, zupft sie eine von vier Saiten, abhängig von der Position der Kurbel und der Drehrichtung. Wenn die Kurbel genau nach Norden gedreht wird, sieht die Box (mit den Saiten 1 bis 4) folgendermaßen aus:
1 | 2
|
O
4 3
Von dort aus kann ich die Kurbel im Uhrzeigersinn drehen, um die Saite 2 zu zupfen und die Kurbel nach Osten zu richten:
1 2
O---
4 3
Alternativ hätte ich auch die Kurbel von Norden gegen den Uhrzeigersinn drehen können, um die erste Saite zu spielen und mit einer nach Westen weisenden Kurbel zu enden:
1 2
---O
4 3
Zu jeder Zeit kann die Box dann eine von zwei Noten spielen: die nächste verfügbare Note im Uhrzeigersinn oder die nächste Note gegen den Uhrzeigersinn.
Herausforderung
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die eine nicht leere Folge von Notenwerten (dh Ziffern 1
bis 4
) akzeptiert, und festzustellen, ob es jemals möglich ist, diese Notenfolge auf der Spieluhr abzuspielen. Produzieren Sie ein wahres oder falsches Ergebnis, um die Spielbarkeit oder Nichtspielbarkeit der Eingabe anzuzeigen.
Einige Notizen:
Die Eingabe macht keine Annahmen über die anfängliche Startposition. Die Eingaben
214
(von Osten ausgehend und streng gegen den Uhrzeigersinn bewegend) und234
(von Norden ausgehend und streng im Uhrzeigersinn bewegend) und beide sind gültig.Die Kurbel kann sich nach jeder Note frei in beide Richtungen bewegen. Eine Reihe derselben Note ist möglich (zB
33333
), indem man sich über eine Saite vor und zurück bewegt. Die Serie1221441
ist perfekt spielbar (von Westen aus zwei Schritte im Uhrzeigersinn, dann drei Schritte gegen den Uhrzeigersinn und dann zwei Schritte im Uhrzeigersinn).
Proben
Einige true
Fälle:
1
1234
1221
3333
143332
22234
2234
22214
1221441
41233
Einige false
Fälle:
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