Saya memiliki kotak musik yang dioperasikan engkol yang dapat memainkan serangkaian empat catatan. Ketika saya memutar engkol, itu memutar salah satu dari empat senar, tergantung pada posisi engkol dan arah putaran. Ketika engkol diputar ke utara, kotak (dengan senar bernomor 1 hingga 4) terlihat seperti ini:
1 | 2
|
O
4 3
Dari sana, saya bisa memutar engkol searah jarum jam untuk memetik senar # 2 dan mengarahkan engkol ke timur:
1 2
O---
4 3
Sebagai alternatif, saya juga bisa memutar engkol berlawanan arah jarum jam dari utara untuk memainkan string # 1 dan mengakhiri dengan engkol yang menunjuk ke barat:
1 2
---O
4 3
Maka, pada waktu tertentu, kotak itu dapat memainkan salah satu dari dua not: not berikutnya tersedia dalam arah searah jarum jam atau not berikutnya dalam arah berlawanan arah jarum jam.
Tantangan
Tantangan Anda adalah menulis program atau fungsi yang menerima string nilai not yang tidak kosong (yaitu, angka yang 1
dilewati 4
) dan menentukan apakah mungkin untuk memainkan urutan not pada kotak musik. Menghasilkan hasil yang benar atau salah untuk menunjukkan kemampuan memutar atau tidak dapat dimainkannya input.
Beberapa catatan:
Masukan tidak membuat asumsi tentang posisi awal awal. Input
214
(mulai ke timur dan bergerak sangat berlawanan arah jarum jam) dan234
(mulai ke utara dan bergerak dengan ketat searah jarum jam) dan keduanya valid.Engkol dapat bergerak bebas ke kedua arah setelah setiap nada. Serangkaian catatan yang sama dimungkinkan (misalnya,
33333
) dengan bergerak bolak-balik melintasi satu string. Serial1221441
ini dapat dimainkan dengan sempurna (mulai barat, bergerak searah jarum jam dua langkah, lalu berlawanan arah tiga langkah, lalu searah jarum jam dua langkah).
Sampel
Beberapa true
kasus:
1
1234
1221
3333
143332
22234
2234
22214
1221441
41233
Beberapa false
kasus:
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