Ayer compré una armónica:
Figura 1: La armónica.
Sin embargo, mis sueños de poder tocar una armónica de blues conmovedora que conmueve a las personas y hace llorar a un hombre adulto se desvanecieron rápidamente por dos problemas:
- La armónica solo puede tocar ciertas notas;
- Soy deprimentemente malo tocando la armónica.
A pesar de mi falta de habilidad en la armónica, todavía hay algunas canciones que puedo tocar en ella. Sin embargo, no es obvio de inmediato si puedo tocar alguna pieza musical en la armónica o no. Dadas las notas de una pieza musical, escriba un programa para determinar si podría tocarlo en mi armónica o no.
Como muestra la imagen de arriba, mi armónica tiene diez agujeros. Con cada orificio, puedo exhalar o inhalar, el orificio que elijo y si inhalo o exhalo cambia el tono del sonido resultante. Cada hoyo tiene un tono diferente al exhalar e inhalar, pero hay algunas combinaciones que dan como resultado la misma nota. En general, mi armónica puede tocar 19 tonos diferentes únicos. Los tonos se presentan en notación científica musical: la letra representa la nota y el número representa en qué octava se encuentra.
Hole Breathing Note
1 Exhale C4
1 Inhale D4
2 Exhale E4
2 Inhale G4
3 Exhale G4
3 Inhale B4
4 Exhale C5
4 Inhale D5
5 Exhale E5
5 Inhale F5
6 Exhale G5
6 Inhale A5
7 Exhale C6
7 Inhale B5
8 Exhale E6
8 Inhale D6
9 Exhale G6
9 Inhale F6
10 Exhale C7
10 Inhale A6
Por ejemplo, si exhalo en el hoyo 3, obtendría una G4
nota. Si inhalara en el hoyo 2, también recibiría una G4
nota. Si exhalara en el hoyo 7, obtendría un C6
.
Cuando respiro en la armónica, además de exhalar o inhalar, también puedo elegir si respirar con dificultad o con dificultad . Respirar ligeramente hace que suene solo un agujero, mientras que la respiración hace que suene un agujero y ambos agujeros a cada lado de ese agujero. No tengo las habilidades de embocadura para soplar en dos agujeros: es uno o tres.
Por ejemplo, si exhalo por poco en el hoyo 4, solo sonaría el hoyo 4, por lo que obtendría un sonido C5. Si exhalara ampliamente en el hoyo 4, sonarían los agujeros 3, 4 y 5, y obtendría un acorde G4, C5, E5. Si inhalara ampliamente en el hoyo 4, sonarían los agujeros 3, 4 y 5, pero en su lugar tocarían los tonos de inhalación, lo que da como resultado un acorde B4, D5, F5. Tenga en cuenta que para los agujeros en cualquier extremo, si respiro profundamente en ellos, solo sonarían dos agujeros (porque no hay un agujero 0 o un agujero 11).
Sin embargo, no puedo inhalar y exhalar al mismo tiempo. Por ejemplo, podría exhalar en los agujeros 4, 5 y 6 para que las notas C5, E5 y G5 suenen al mismo tiempo, formando un acorde. Sin embargo, no puedo inhalar y exhalar al mismo tiempo, por lo que sería imposible para mí tocar el acorde C5, F5, A5 ya que de alguna manera tendría que exhalar en el hoyo 4 e inhalar en el hoyo 5 y 6. Si Esto aún no está claro, este hilo de comentarios podría ser útil.
La entrada son las notas de la música. Las notas se anotan de la misma manera que en la tabla anterior y están separadas por comas. Las notas envueltas entre corchetes representan un acorde. Por ejemplo:
C4,D4,G4,{D5,F5,A5},B5
Esto significa "C4, luego D4, luego G4, luego D5, F5 y A5 al mismo tiempo, luego B5". Su programa tomará una secuencia en este formato como entrada y salida True
si me es posible reproducir la música en mi armónica, o de False
otra manera. Para entradas y salidas de muestra, se debe mostrar el ejemplo anterior True
. La entrada {C5,F5,A5}
por otro lado saldrá False
.
Este es el código de golf, por lo que gana la entrada más corta.
Aquí hay algunos casos de prueba:
Entrada (escala principal de CA):
C4,D4,E4,F4,G4,A4,B4,C5
Salida:
False
(porque la armónica no puede tocar F4 o A4)
Entrada (las 2 barras iniciales de Let It Go ):
E6,F6,A5,E6,F6,F6,E6,A5,F6,E6
Salida:
True
Entrada:
{E6,G6,F6}
Salida:
False
Entrada:
{G4,C5,E5},{F5,A5,B5}
Salida:
True
Puede suponer que los acordes vendrán en un orden de tono más bajo a más alto.