ACM - Universidad Autonoma de Puebla



Problema E - Aprendiendo armonía

Entrada: armonia.in
Salida: estándar
Máxima memoria: 32 MB
Tiempo límite: 5 segundos

Descripción

Pedrito está aprendiendo música y el curso que más se le dificulta es armonía. En particular, Pedrito tiene que esforzarse mucho para escribir los acordes que el profesor le dicta. Escribe un programa que le dé a Pedro el nombre de las notas que corresponden a un acorde dado.

Algo sobre teoría musical:

Las notas tienen siete nombres posibles: Do, Re, Mi, Fa, Sol, La y Si. Sin embargo, la escala tradicional tiene doce notas diferentes que se repiten periódicamente. Es posible dar nombre a cada una de estas doce notas gracias a los operadores sostenido (#) y bemol (b) cuya función es, respectivamente, aumentar y disminuir un “semitono” a la nota dada. De esta forma podríamos dar los siguientes nombres a las doce notas:

Do Do# Re Mib Mi Fa Fa# Sol Lab La Sib Si

Observa que no hay una nota intermedia entre Mi y Fa. También observa que, como la secuencia de notas se repite periódicamente, la nota que sigue después del último Si se llama Do, la siguiente se llama Do#, etcétera, y lo mismo ocurre hacia la izquierda.

Pero esta manera de dar nombre a las doce notas no es la única. Por ejemplo, Fa# = Solb porque ambos nombres corresponden a la nota intermedia entre Fa y Sol. Incluso es en teoría posible aplicar los operadores # y b varias veces a una nota. En la práctica, sin embargo, se utilizan únicamente el doble sostenido (denotado x) y el doble bemol (denotado bb) y sólo se usan cuando es necesario (por cuestiones melódicas o armónicas). Así, Mibb = Re, pero Mibb sólo se emplea en ciertas situaciones específicas.

Un acorde es la ejecución simultánea de tres o más notas. Por el efecto que producen al escucharse, los acordes se clasifican en varios tipos. Los primeros cuatro tipos de acordes que aprendió Pedro son el acorde mayor y el acorde menor, al acorde aumentado y el acorde disminuido. Éstos pueden construirse utilizando como base cualquiera de las doce notas que existen. Por ejemplo,los respectivos acordes basados en Do son:

Para construir estos acordes sobre otras notas base se respetan los mismos intervalos o distancias entre las notas. Por ejemplo, para construir el acorde de Fa# menor, escribiríamos en primer lugar Fa#, luego la nota que se encuentra tres semitonos arriba de Fa# (porque Mib está tres semitonos arriba de Do), que es La, y por último escribiríamos la nota que se encuentra cuatro semitonos arriba de La (porque Sol está cuatro semitonos arriba de Mib), que es Do#. Así tenemos que el acorde de Fa# menor es Fa# La Do#.

Hay que hacer notar, sin embargo, que aunque Do# también se llama Reb, es incorrecto escribirlo de esa forma, porque los nombres de las notas, ignorando los sostenidos y los bemoles, tienen que tomarse uno sí y uno no, por ejemplo si es un acorde en Fa, debe darse en término de Fa La y Do. De aquí surge la necesidad armónica de utilizar en ocasiones incluso dobles sostenidos y dobles bemoles.

Entrada

La entrada contiene una lista de acordes que hay que describir, un acorde en cada línea. La última línea contiene la palabra Fin y no debe procesarse. Puedes suponer que sólo aparecerán acordes mayores, menores, aumentados y disminuidos (escritos en minúsculas), y que los nombres de sus notas base serán válidos, comenzarán con mayúscula (luego continuarán en minúsculas) y no contendrán ni dobles sostenidos ni dobles bemoles.

Salida

Por cada acorde de la entrada, imprime en una línea las tres notas que conforman el acorde, en orden y separadas por un espacio.

 

Ejemplo de entrada

Ejemplo de salida

Fa# menor
Fa disminuido
Fin

Fa# La Do#
Fa Lab Dob


Regresar