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