在连续记号和初音岛是两个非常常用的音乐术语。它们分别表示“ 从符号 ”(𝄋)和“ 从头开始 ”。
另外还有的想法尾声(𝄌),这是一首乐曲的最后一刻。这是作品“主要部分”之后的内容。
例如,DS al coda(Dal Segno al coda)的意思是“去找segno,玩直到被告知要去到coda,然后跳到那里。”
描述
在此挑战中,您的工作是接受由可能包含或不包含Dal Segno和Da Capo的任意数量的音符组成的输入,并输出带有上述“未展开”的相同乐曲,以便使重复音节逐字扩展。
输入值
您的代码应将一系列音符或信号(此处定义为除音符)作为输入,并在一个字符串中用空格分隔。
调为任意的
a
,b
,c
,d
,e
,f
,或g
,具有可选的#
或b
附加的(对于这一挑战的目的,没有节奏)。一个
C
(大写C)表示结尾标记。总会有零个或两个尾声标记;第一个尾声标记表示从何处跳转,第二个尾声表示从何处跳转。一个
S
(大写S)表示预兆报标记。签名标记始终为零或一个。一个
F
(大写F)表示精细标记。这“覆盖”了作品的结尾,更多内容在下面。始终会有零个或一个精细的标记。以下任何精确的文本字符串均表示:
D.S. al fine
:去SIGNO和玩到一块的任何一个结束或精细标记(如果存在的话)。D.S. al coda
:去SIGNO,玩,直到结尾,然后跳转到第二个结尾标记和发挥,直至曲终。D.C. al fine
:从头开始,播放到结尾或精细标记。D.C. al coda
:去年初,玩,直到结尾,然后跳转到第二个结尾标记和发挥,直至曲终。
每段中每个字符串始终始终为零,最多为一个。一块中永远不会有多个
al fine
或多个al coda
。
输出量
您的代码应以类似的字符串格式输出:注释列表,以空格分隔。
您可能总是假设输出最终将是一个或多个字符长。
测试用例
进: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
后继者aD.S.
,永远会有一个前者等等。这是code-golf,因此以字节为单位的最短代码将获胜。