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.DAG
es 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 O
en 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 C
serí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
, C
y E
al 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)
:)?