У мене є музична скринька з рукояткою, яка може відтворювати серію з чотирьох нот. Коли я повертаю кривошип, він вищипує одну з чотирьох струн, залежно від положення кривошипа та напрямку повороту. Коли кривошип повернутий на північ, коробка (з її рядками пронумеровані від 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