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