Su tarea es tomar una secuencia de caracteres (la música) como entrada (en una función o programa) e imprimir (o devolver) la música como se vería en una caja de música.
Solo recibirá los caracteres ABCDEFG.()como entrada, y la entrada nunca estará vacía. También puede recibir las letras en minúsculas, si lo desea.
Esta es una caja de música vacía, de longitud 3:
.......
.......
.......
Como puede ver, las líneas tienen 7 caracteres de longitud, y dado que la longitud de la caja de música es 3, tenemos 3 líneas. Solo hay .s aquí, ya que la caja de música está vacía. ¡Pongamos algo de música!
Primero, creamos la caja de música. En este ejemplo, la entrada será CDAG.DAG.
La longitud de CDAG.DAGes 8, por lo que necesitamos una caja de música de longitud 8:
.......
.......
.......
.......
.......
.......
.......
.......
Luego, leemos la entrada, un carácter a la vez, y colocamos un Oen su respectiva posición.
El primer carácter es C, y la ubicación de cada nota es equivalente a esto (agregué espacios para mayor claridad):
A B C D E F G
. . . . . . .
. . . . . . .
(and so on)
Si el carácter de entrada es un ., entonces solo imprimimos una línea vacía.......
Entonces, el Csería el tercer personaje a lo largo. Pongámoslo en nuestra caja de música en la parte superior:
..O....
.......
.......
.......
.......
.......
.......
.......
Repetiremos este proceso para todos los demás caracteres (el texto entre paréntesis es solo para mostrarle la nota, no debe mostrar eso):
..O.... (C)
...O... (D)
O...... (A)
......O (G)
....... (.)
...O... (D)
O...... (A)
......O (G)
Debido a cómo funcionan las cajas de música, si usamos un carácter distinto de O, .y <insert newline here>, como un espacio, en nuestra salida, ¡entonces no reproducirá la música correcta!
Este es un acorde:
(ACE)
Este acorde nos está instruyendo a tocar las notas A, Cy Eal mismo tiempo. Nunca habrá una pausa (es decir, a .) en un acorde.
Así es como se escribiría:
O.O.O...
Y así es como podría aparecer en la música: B(ACE)D
Nunca recibirá un acorde en un acorde, es decir, esto no será válido: (AB(CD)EF)o esto: A(B())y el acorde no estará vacío, es decir, esto no será válido:A()B
Nunca recibirá una entrada no válida.
Ejemplos:
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.
Se permite el espacio en blanco final / inicial en la salida.
Como se trata de código de golf , ¡el código más corto gana!
()dos veces (por ejemploAB(CD)E(FG):)?