Dal Segno и Da Capo два очень часто используемых музыкальных терминов. Они означают « от знака » (𝄋) и « от начала » соответственно.
Есть также идея коды (𝄌), которая является самым концом музыкального произведения. Это то, что играется после «основного раздела» пьесы.
Например, « DS al coda» (« Dal Segno al coda» ) означает «иди к сеньо , играй до тех пор, пока тебе не скажут пойти к коду , а затем прыгнуть туда».
Описание
Ваша задача в этой задаче состоит в том, чтобы принимать входные данные, состоящие из любого количества нот, которые могут содержать или не содержать Даль Сеньо и Да Капо, и выводить одну и ту же музыку с вышеупомянутыми прыжками, «развернутыми», так что повторения расшифровываются дословно.
вход
Ваш код должен принимать в качестве входных данных последовательность примечаний или сигналов (здесь определенную как что-либо кроме примечания), разделенных пробелами в одной строке.
Примечания являются любыми
a
,b
,c
,d
,e
,f
, илиg
, с необязательным#
илиb
прилагаются (для целей этой проблемы, нет ритма).A
C
(заглавная c) обозначает маркировку кода . Всегда будет либо ноль, либо две маркировки кода ; первая маркировка кода указывает, куда прыгать, а вторая - куда прыгать.S
(Капитал s) представляет собой Signo маркировку. Там всегда будет ноль или один Signo маркировки (ы).F
(Капитал е) представляет собой штраф маркировки. Это «переопределяет» конец фрагмента - подробнее об этом ниже. Всегда будет либо ноль, либо одна точная маркировка.Любая из следующих точных строк текста представляет:
D.S. al fine
: идите к знаку и играйте до конца пьесы или до точной маркировки (если она существует).D.S. al coda
: идите к синьо , играйте до кода , затем переходите ко второй маркировке кода и играйте до конца пьесы.D.C. al fine
: перейти к началу, играть до конца или точная маркировка.D.C. al coda
: идите в начало, играйте до кода , затем переходите ко второй маркировке кода и играйте до конца пьесы.
Всегда будет минимум с нуля и максимум по одной каждой строке за штуку. Там никогда не будет несколько
al fine
s или несколькоal coda
s в куске.
Вывод
Ваш код должен выводить в похожем формате строки: список заметок, разделенных пробелами.
Вы всегда можете предположить, что в результате вы получите один или несколько символов.
Контрольные примеры
In: a# bb c b a
Out:a# bb c b a
In: a S b D.S. al fine c
Out:a b b c
In: a S b C c D.S. al coda d C e
Out:a b c b e
In: a b F c d D.C. al fine e f
Out:a b c d a b
In: a b D.C. al fine c d F e f
Out:a b a b c d
In: a b C c d D.C. al coda e f C g g#
Out:a b c d a b g g#
In: a b D.C. al coda c d C e f C g g#
Out:a b a b c d g g#
In: a b S c d C D.C. al coda C D.S. al fine e f F g
Out:a b c d a b c d c d e f
In: a S b C c D.S. al coda C d D.S. al fine e F f
Out:a b c b d b c d e
In: a b C c d D.C. al coda e f F g g# C gb a# D.C. al fine
Out:a b c d a b gb a# a b c d e f
In: a F b C D.C. al coda C D.C. al fine
Out:a b a b a
In: C a S b D.C. al coda C c D.S. al fine d
Out:a b c b c d
In: a S b D.S. al coda C C c D.C. al fine
Out:a b b c a b c
In: a F C b C D.C. al coda D.C. al fine
Out:a b a a
правила
Маркировка всегда будет отображаться в логическом порядке. То есть никогда не будет
S
послеD.S.
и всегда будет до и т. Д.Это код-гольф , поэтому выиграет самый короткий код в байтах.