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