和音のリストが与えられた場合、それらを「メジャー」または「マイナー」としてラベル付けします。
入力
入力は、スペースで区切られた3つのノートで構成されるコードのリストで、1行に1つです。各音符は、大文字の音符名(A
- G
)とオプションの臨時記号(#
またはb
)で構成されます。コードは、任意の反転である場合があります(つまり、ノートは任意の順序である場合があります)。
出力
コードがメジャーの場合、「メジャー」を出力します。コードがマイナーの場合、「マイナー」を出力します。コードがメジャーでもマイナーでもない場合は、空白行を出力します。
例
入力
C E G
F Ab C
C Eb Gb
E G B
Db F Ab
Bb G D
D A Gb
出力
Major
Minor
Minor
Major
Minor
Major
テストスクリプト
過去の質問のいくつかと同様に、JoeyとVenteroが元々作成したいくつかのテストスクリプトをもう一度処理して、この質問のテストケースを提供しました。
使用法: ./test [your program and its arguments]
報酬
仕様を満たしていることが確認でき、テストに合格し、明らかにゴルフの試みを行った各エントリは、私から賛成票を受け取ります(そのため、使用方法を回答してください)。2012年10月13日までの最短のソリューションが勝者として受け入れられます。
ちょっとした理論
音楽理論の知識をお持ちでない方は、ここで十分な情報を入手して競争してください。
メジャーまたはマイナーコードは、特定の半音パターンで区切られた3つの音で構成されます。コードのルート(ボトムノート)を0と見なす場合、メジャーコードはパターン0-4-7で、マイナーコードはパターン0-3-7です。一部の音符が半音離れていて、一部の音符が離れているという事実によって、事態はより厄介になります。Ab
- からの半音の広がりはG#
次のとおりです。
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
G#
は、と同じ音であることを意味しAb
ます。このことから、コードAb C Eb
はメジャーコードであり、Ab Cb Eb
マイナーコードであることがわかります。
さらに複雑な問題に、弦がEb Cb Ab
同じであると考えられAb Cb Eb
、Cb Eb Ab
およびCb Ab Eb
等々 。これらのバリエーションはどれもまだマイナーなコードです。