Votre tâche consiste à prendre une séquence de caractères (la musique) en entrée (dans une fonction ou un programme) et à imprimer (ou renvoyer) la musique telle qu'elle apparaîtrait dans une boîte à musique.
Vous ne recevrez que les caractères ABCDEFG.()en entrée et l'entrée ne sera jamais vide. Vous pouvez également recevoir les lettres en minuscules, si vous le souhaitez.
Ceci est une boîte à musique vide, de longueur 3:
.......
.......
.......
Comme vous pouvez le voir, les lignes sont de 7 caractères, et comme la longueur de la boîte à musique est de 3, nous avons 3 lignes. Il n'y en a que .ici, car la boîte à musique est vide. Mettons de la musique dedans!
Tout d'abord, nous créons la boîte à musique. Dans cet exemple, l'entrée sera CDAG.DAG.
La longueur CDAG.DAGest de 8, nous avons donc besoin d'une boîte à musique de longueur 8:
.......
.......
.......
.......
.......
.......
.......
.......
Ensuite, nous lisons l'entrée, un caractère à la fois, et plaçons un Oà sa position respective.
Le premier caractère est C, et l'emplacement de chaque note est équivalent à cela (j'ai ajouté des espaces pour plus de clarté):
A B C D E F G
. . . . . . .
. . . . . . .
(and so on)
Si le caractère saisi est un ., alors nous imprimons simplement une ligne vide.......
Donc, ce Cserait le 3ème personnage. Mettons-le dans notre boîte à musique en haut:
..O....
.......
.......
.......
.......
.......
.......
.......
Nous répéterons ce processus pour tous les autres caractères (le texte entre parenthèses est juste pour vous montrer la note, vous ne devriez pas le sortir):
..O.... (C)
...O... (D)
O...... (A)
......O (G)
....... (.)
...O... (D)
O...... (A)
......O (G)
En raison du fonctionnement des boîtes à musique, si nous utilisons un caractère autre que O, .et <insert newline here>, comme un espace, dans notre sortie, il ne jouera pas la bonne musique!
Ceci est un accord:
(ACE)
Cet accord nous demande de jouer les notes A, Cet Een même temps. Il n'y aura jamais de pause (ie a .) dans un accord.
Voici comment il serait écrit:
O.O.O...
Et voici comment cela pourrait apparaître dans la musique: B(ACE)D
Vous ne recevrez jamais d'accord dans un accord, c'est-à-dire que ce ne sera pas valide: (AB(CD)EF)ou ceci A(B()):, et l'accord ne sera pas vide, c'est-à-dire que ce ne sera pas valide:A()B
Vous ne recevrez jamais une entrée non valide.
Exemples:
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.
Les espaces de fin / de début sur la sortie sont autorisés.
Comme il s'agit de code-golf , le code le plus court gagne!
()deux fois (par exempleAB(CD)E(FG):) ??