달 세뇨 및 다카포는 두 개의 매우 일반적으로 사용되는 음악 용어입니다. 그들은 "의미 부호에서 (𝄋)와" " 처음부터 "각각.
음악의 끝인 코다 (𝄌)에 대한 아이디어도 있습니다 . 작품의 "메인 섹션"이후에 재생되는 것입니다.
DS 알 코다 ( 달 세뇨 알 코다 ), 예를 들어, 수단 "은 이동 SEGNO 당신이에 가고 듣는다 때까지 플레이를 종결 한 다음이 뛰어."
기술
이 도전에서 당신의 임무는 Dal Segno 와 Da Capo를 포함 할 수도 있고 포함하지 않을 수있는 많은 노트로 구성된 입력을 취하고 위에서 언급 한 점프 "펼침"으로 동일한 음악을 출력하여 반복이 그대로 확장되도록하는 것입니다.
입력
코드는 하나의 문자열에서 공백으로 구분 된 일련의 음표 또는 신호 (여기서는 음표 이외의 것으로 정의) 를 입력으로 사용해야 합니다.
노트의이다
a
,b
,c
,d
,e
,f
, 또는g
선택 사양으로#
또는b
추가 (이 문제의 목적을 위해, 어떤 리듬이 없다).A
C
(자본 c)는 코다 표시를 나타냅니다 . 항상 0 또는 2 개의 코다 표시 가있을 것입니다 . 첫 번째 코다 표시는 점프 할 위치를 나타내고 두 번째 코다 표시는 점프 할 위치를 나타냅니다.S
(자본들) 대표 SIGNO 표시합니다. 항상 0 또는 1 개의 서명 표시 가있을 것 입니다.F
(자본 F)을 나타내는 미세 마킹. 이것은 조각의 끝을 "재정의"합니다. 아래에서 더 자세히 설명합니다. 항상 0 또는 1 개의 미세 표시가 있습니다.다음과 같은 정확한 텍스트 문자열은 다음을 나타냅니다.
D.S. al fine
: signo 로 이동 하여 조각의 끝 또는 미세 표시 (있는 경우)가 나올 때까지 재생하십시오 .D.S. al coda
: signo 로 가서 coda 까지 연주 한 다음 두 번째 coda 표시 로 점프 하여 조각의 끝까지 연주하십시오.D.C. al fine
: 처음으로 이동하여 끝 또는 미세 표시 까지 재생 합니다.D.C. al coda
: 시작 부분으로 이동하여 coda 까지 재생 한 다음 두 번째 coda 표시로 이동하여 조각 끝까지 재생합니다.
조각 당 각 문자열의 최소 0과 최대 1이 항상 있습니다. 한 조각에
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
후에 는 결코D.S.
없을 것이며 항상 앞에 등이있을 것입니다.이것은 code-golf 이므로 바이트 단위의 가장 짧은 코드가 승리합니다.