Il Dal Segno e Da Capo sono due termini musicali molto comunemente usati. Significano rispettivamente " dal segno " (𝄋) e " dall'inizio ".
C'è anche l'idea della coda (𝄌), che è la fine di un brano musicale. È ciò che si suona dopo la "sezione principale" del pezzo.
Un DS al coda ( Dal Segno al coda ), ad esempio, significa "vai al segno , gioca fino a quando ti viene detto di andare alla coda , e poi salta lì".
Descrizione
Il tuo compito in questa sfida è quello di prendere input composti da un numero qualsiasi di note che possono contenere o meno Dal Segno e Da Capo e produrre la stessa musica con i salti di cui sopra "spiegati" in modo che le ripetizioni si espandano alla lettera.
Ingresso
Il tuo codice dovrebbe prendere come input una sequenza di note o segnali (qui definita come tutt'altro che una nota), separati da spazi in una stringa.
Le note sono una delle
a
,b
,c
,d
,e
,f
, og
, con un optional#
ob
allegato (ai fini di questa sfida, non c'è ritmo).A
C
(maiuscola c) rappresenta un segno di coda . Ci saranno sempre zero o due code segni di ; la prima marcatura di coda rappresenta da dove saltare, e la seconda rappresenta da dove saltare.Una
S
(maiuscola) rappresenta un segno signo . Ci sarà sempre zero o uno segni signo .Una
F
(maiuscola f) rappresenta una marcatura fine . Questo "annulla" la fine del pezzo, più su quello qui sotto. Ci sarà sempre zero o uno marcatura fine .Una delle seguenti stringhe esatte di testo rappresenta:
D.S. al fine
: vai al signo e suona fino alla fine del pezzo o alla marcatura fine (se esiste).D.S. al coda
: vai al signo , gioca fino alla coda , quindi salta alla seconda marcatura della coda e gioca fino alla fine del pezzo.D.C. al fine
: vai all'inizio, gioca fino alla fine o alla marcatura fine .D.C. al coda
: vai all'inizio, gioca fino alla coda , poi salta alla seconda marcatura della coda e gioca fino alla fine del pezzo.
Ci sarà sempre un minimo di zero e un massimo di una per ogni stringa per pezzo. Non ci saranno mai più
al fine
S o piùal coda
S in un pezzo.
Produzione
Il codice dovrebbe essere generato in un formato stringa simile: un elenco di note, separate da spazi.
Si può sempre presumere che l'output finirà per essere lungo uno o più caratteri.
Casi test
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
Regole
I segni appariranno sempre in un ordine logico. Cioè, non ci sarà mai un
S
dopoD.S.
e ce ne sarà sempre uno prima, ecc.Questo è code-golf , quindi vincerà il codice più breve in byte.