Étant donné une liste d'accords, étiquetez-les comme «majeurs» ou «mineurs».
Contribution
L'entrée sera une liste d'accords, un par ligne, composé de 3 notes séparées par un espace. Chaque note se composera du nom de la note en majuscule (A
- G
) et d'un accidentel ( #
ou b
) facultatif . Les accords peuvent être dans n'importe quelle inversion (c'est-à-dire que les notes peuvent être dans n'importe quel ordre).
Production
Si l'accord est majeur, sortez «Major». Si l'accord est mineur, sortez «Minor». Si l'accord n'est ni majeur ni mineur, sortez une ligne vierge.
Exemple
Contribution
C E G
F Ab C
C Eb Gb
E G B
Db F Ab
Bb G D
D A Gb
Production
Major
Minor
Minor
Major
Minor
Major
Scripts de test
Comme dans certaines de mes questions précédentes, j'ai une fois de plus massacré des scripts de test créés à l'origine par Joey et Ventero pour fournir des cas de test pour cette question:
Usage: ./test [your program and its arguments]
Récompenses
Chaque entrée dont je peux vérifier qu'elle répond aux spécifications, réussit les tests et a évidemment eu une tentative de golf recevra un vote positif de ma part (veuillez donc fournir des instructions d'utilisation avec votre réponse). La solution la plus courte d'ici la fin du 13/10/2012 sera acceptée comme gagnante.
Un peu de théorie
Pour ceux d'entre vous qui n'ont aucune connaissance de la théorie musicale, voici suffisamment d'informations pour pouvoir participer.
Un accord majeur ou mineur est composé de trois notes séparées par un motif spécifique de demi-tons. Si nous considérons la racine (note du bas) de l'accord comme étant 0, alors un accord majeur est le motif 0-4-7 et un accord mineur est le motif 0-3-7. Les choses sont rendues plus gênantes par le fait que certaines notes sont séparées par un demi-ton et d'autres par un ton différent. La répartition des demi-tons de Ab
- G#
est la suivante:
G#/Ab A A#/Bb B/Cb B#/C C#/Db D D#/Eb E/Fb E#/F F#/Gb G G#/Ab
0 1 2 3 4 5 6 7 8 9 10 11 12
G#/Ab
signifie que c'est G#
la même note que Ab
. De cela, nous pouvons voir que l'accord Ab C Eb
est un accord majeur, et c'est Ab Cb Eb
mineur.
Pour compliquer encore les choses, l'accord Eb Cb Ab
est considéré comme le même que Ab Cb Eb
, Cb Eb Ab
et Cb Ab Eb
et ainsi de suite. Chacune de ces variations est encore un accord mineur.