La plupart d'entre vous connaissent probablement l'échelle en do majeur:
C D E F G A B C
La gamme majeure se caractérise par les intervalles entre les notes adjacentes, mesurés en demi - tons :
2 2 1 2 2 2 1
A partir de ces intervalles, nous pouvons construire n'importe quelle gamme majeure à partir de n'importe quelle note (la clé de la gamme). Les 12 notes de notre système d'accord de tempérament égal à 12 tons sont:
C C♯ D D♯ E F F♯ G G♯ A A♯ B
de manière équivalente (en remplaçant certains équivalents enharmoniques ):
C D♭ D E♭ E F G♭ G Ab A B♭ B
avec un demi-ton entre chaque paire de notes adjacentes.
Chaque gamme doit avoir les sept notes dans l'ordre, en commençant par la clé. Sinon, vous pourriez avoir deux notes sur la même ligne du pentagramme, ce qui serait déroutant. Donc, en G # majeur / ionien, vous avez F ## au lieu de G; les musiciens vont juste regarder où dans le pentagramme se trouve la note, ils ont déjà appris les accidents pour chaque gamme. En effet, en G # majeur , F ## est représenté dans la ligne de F ## sans accident, les accidentels sont dans la signature de clé - mais puisque cette signature de clé nécessiterait 2 tranchants pour F, généralement cela est noté comme Ab majeur.
En décalant les 2 2 1 2 2 2 1
intervalles, nous arrivons à sept modes différents de l'échelle diatonique:
- Ionienne :
2 2 1 2 2 2 1
- correspond à l'échelle majeure - Dorian :
2 1 2 2 2 1 2
- Phrygien :
1 2 2 2 1 2 2
- Lydian :
2 2 2 1 2 2 1
- Mixolydian :
2 2 1 2 2 1 2
- Éolienne :
2 1 2 2 1 2 2
- correspond à la gamme mineure naturelle et à la gamme mineure mélodique en descendant (en montant, la gamme mineure mélodique a augmenté de 6e et 7e degrés. Il y a aussi une gamme mineure harmonique, avec un 7e degré élevé par rapport au naturel mineur). - Locrian :
1 2 2 1 2 2 2
Donc, le défi est d'écrire un programme qui prend en entrée (via stdin ) une clé et un mode et sort (via stdout ) l'échelle correspondante. Quelques cas de test ( stdin ( key
mode
) => stdout ( scale
)):
Input: Output:
C mixolydian => C D E F G A Bb
F mixolydian => F G A Bb C D Eb
G mixolydian => G A B C D E F
G# ionian => G# A# B# C# D# E# F##
Bb aeolian => Bb C Db Eb F Gb Ab
Autres références:
Combien y a-t-il de clés (majeures et mineures)? Pourquoi?
Réponses:
GolfScript, 96 caractères
Solution Golfscript testable en ligne .
Remarque: Comme dans les exemples, la clé doit être en majuscules tandis que le mode doit être indiqué en minuscules.
Exemples:
la source