Tôi có một hộp nhạc hoạt động bằng tay quay có thể chơi một loạt bốn nốt nhạc. Khi tôi xoay tay quay, nó sẽ cắm một trong bốn dây, tùy thuộc vào vị trí của tay quay và hướng quay. Khi quay tay quay về hướng bắc, hộp (với các chuỗi được đánh số từ 1 đến 4) trông như thế này:
1 | 2
|
O
4 3
Từ đó, tôi có thể xoay tay quay theo chiều kim đồng hồ để nhổ dây số 2 và chỉ tay quay về hướng đông:
1 2
O---
4 3
Ngoài ra, tôi cũng có thể quay tay quay ngược chiều kim đồng hồ từ phía bắc để chơi chuỗi số 1 và kết thúc bằng một tay quay hướng về phía tây:
1 2
---O
4 3
Tại bất kỳ thời điểm nào, sau đó, hộp có thể phát một trong hai nốt: nốt tiếp theo có sẵn theo chiều kim đồng hồ hoặc nốt tiếp theo theo hướng ngược chiều kim đồng hồ.
Thử thách
Thử thách của bạn là viết một chương trình hoặc chức năng chấp nhận một chuỗi các giá trị ghi chú không trống (nghĩa là các chữ số 1
thông qua 4
) và xác định xem có thể phát chuỗi ghi chú đó trên hộp nhạc không. Tạo ra một kết quả trung thực hoặc giả để chỉ ra khả năng phát hoặc không phát của đầu vào.
Một số lưu ý:
Đầu vào không có giả định về vị trí bắt đầu ban đầu. Các đầu vào
214
(bắt đầu từ phía đông và di chuyển theo chiều ngược chiều kim đồng hồ) và234
(bắt đầu từ phía bắc và di chuyển đúng theo chiều kim đồng hồ) và cả hai đều hợp lệ.Tay quay có thể di chuyển tự do theo một trong hai hướng sau mỗi nốt nhạc. Một loạt các ghi chú tương tự là có thể (ví dụ,
33333
) bằng cách di chuyển qua lại trên một chuỗi. Sê-1221441
ri hoàn toàn có thể chơi được (bắt đầu từ phía tây, di chuyển theo chiều kim đồng hồ hai bước, sau đó ngược chiều kim đồng hồ ba bước, sau đó theo chiều kim đồng hồ hai bước).
Mẫu
Một số true
trường hợp:
1
1234
1221
3333
143332
22234
2234
22214
1221441
41233
Một số false
trường hợp:
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