Il tuo compito è prendere una sequenza di caratteri (la musica) come input (in una funzione o programma) e stampare (o restituire) la musica come apparirebbe in un carillon.
Riceverai solo i caratteri ABCDEFG.()come input e l'input non sarà mai vuoto. Puoi anche ricevere le lettere in minuscolo, se lo desideri.
Questo è un carillon vuoto, di lunghezza 3:
.......
.......
.......
Come puoi vedere, le linee sono lunghe 7 caratteri e poiché la lunghezza del carillon è 3, abbiamo 3 linee. Ci sono solo .qui, poiché il carillon è vuoto. Mettiamoci un po 'di musica!
Innanzitutto, creiamo il carillon. In questo esempio, l'input sarà CDAG.DAG.
La lunghezza di CDAG.DAGè 8, quindi abbiamo bisogno di un carillon di lunghezza 8:
.......
.......
.......
.......
.......
.......
.......
.......
Quindi, leggiamo l'input, un carattere alla volta, e posizioniamo un Onella sua rispettiva posizione.
Il primo carattere è Ce la posizione di ciascuna nota è equivalente a questa (ho aggiunto spazi per chiarezza):
A B C D E F G
. . . . . . .
. . . . . . .
(and so on)
Se il carattere di input è a ., stampiamo solo una riga vuota.......
Quindi, Csarebbe il terzo personaggio insieme. Mettiamolo nel nostro carillon in alto:
..O....
.......
.......
.......
.......
.......
.......
.......
Ripeteremo questo processo per tutti gli altri caratteri (il testo tra parentesi è solo per mostrarti la nota, non dovresti emetterlo):
..O.... (C)
...O... (D)
O...... (A)
......O (G)
....... (.)
...O... (D)
O...... (A)
......O (G)
A causa di come funzionano i carillon, se usiamo un personaggio diverso da O, .e <insert newline here>, come uno spazio, nel nostro output, allora non riprodurrà la musica corretta!
Questo è un accordo:
(ACE)
Questo accordo ci sta istruendo a suonare le note A, Ce Eallo stesso tempo. Non ci sarà mai una pausa (cioè a .) in un accordo.
Ecco come sarebbe scritto:
O.O.O...
Ed è così che potrebbe apparire in musica: B(ACE)D
Non riceverai mai un accordo in un accordo, cioè questo non sarà valido: (AB(CD)EF)o questo: A(B())e l'accordo non sarà vuoto, cioè questo non sarà valido:A()B
Non riceverai mai un input non valido.
Esempi:
B(ACE)D
.O.....
O.O.O..
...O...
B
.O.....
GGABC
......O
......O
O......
.O.....
..O....
...
.......
.......
.......
A..F.C(DA).
O......
.......
.......
.....O.
.......
..O....
O..O...
.......
.(ABCDEF)
.......
OOOOOO.
È consentito il trailing / lead whitespace sull'output.
Dato che si tratta di code-golf , vince il codice più corto!
()due volte (ad es .AB(CD)E(FG):) ??