ฉันมีกล่องดนตรีที่หมุนได้ซึ่งสามารถเล่นโน้ตสี่ชุดได้ เมื่อฉันหมุนข้อเหวี่ยงมันจะดึงหนึ่งในสี่สายขึ้นอยู่กับตำแหน่งของข้อเหวี่ยงและทิศทางของการเลี้ยว เมื่อข้อเหวี่ยงหมุนไปทางเหนือกล่อง (ที่มีหมายเลขกำกับตั้งแต่ 1 ถึง 4) จะเป็นดังนี้:
1 | 2
|
O
4 3
จากตรงนั้นฉันสามารถหมุนข้อเหวี่ยงตามเข็มนาฬิกาเพื่อถอนสาย # 2 และชี้จุดหมุนตะวันออก:
1 2
O---
4 3
หรือฉันอาจหมุนทวนเข็มนาฬิกาจากทิศเหนือเพื่อเล่นสตริง # 1 และจบลงด้วยข้อเหวี่ยงชี้ไปทางทิศตะวันตก:
1 2
---O
4 3
เมื่อถึงเวลาใดก็ตามกล่องสามารถเล่นหนึ่งในสองโน้ต: โน้ตถัดไปที่มีในทิศทางตามเข็มนาฬิกาหรือโน้ตถัดไปในทิศทางทวนเข็มนาฬิกา
ท้าทาย
ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ยอมรับสตริงโน้ตที่ไม่ว่างเปล่า (เช่นตัวเลข1
ผ่าน4
) และพิจารณาว่าเป็นไปได้หรือไม่ที่จะเล่นลำดับของโน้ตบนกล่องดนตรี สร้างผลลัพธ์ที่เป็นจริงหรือเป็นเท็จเพื่อระบุความสามารถในการเล่นหรือไม่สามารถเล่นได้ของอินพุต
หมายเหตุบางส่วน:
อินพุตไม่มีข้อสันนิษฐานเกี่ยวกับตำแหน่งเริ่มต้น อินพุต
214
(เริ่มต้นทางทิศตะวันออกและเคลื่อนไหวทวนเข็มนาฬิกาอย่างเคร่งครัด) และ234
(เริ่มต้นทางทิศเหนือและเคลื่อนไหวตามเข็มนาฬิกาอย่างเคร่งครัด) และใช้ได้ทั้งคู่ข้อเหวี่ยงอาจเคลื่อนที่อย่างอิสระในทิศทางใดทิศทางหนึ่งหลังจากแต่ละโน้ต ชุดของบันทึกย่อเดียวกันเป็นไปได้ (เช่น,
33333
) โดยการย้ายไปมาผ่านหนึ่งสาย ซีรีย์1221441
สามารถเล่นได้อย่างสมบูรณ์แบบ (เริ่มต้นทางทิศตะวันตกย้ายตามเข็มนาฬิกาสองขั้นตอนแล้วทวนเข็มนาฬิกาสามขั้นตอนจากนั้นตามเข็มนาฬิกาสองขั้นตอน)
ตัวอย่าง
บางtrue
กรณี:
1
1234
1221
3333
143332
22234
2234
22214
1221441
41233
บางfalse
กรณี:
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