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.DAG
est 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 C
serait 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
, C
et E
en 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)
:) ??