Учитывая список аккордов, пометьте их как «Major» или «Minor».
вход
Ввод будет список аккордов, по одному на строку, состоящий из 3 нот, разделенных пробелом. Каждая заметка будет состоять из имени заметки в верхнем регистре ( A
- G
) и необязательного случайного ( #
или b
). Аккорды могут быть в любой инверсии (т.е. ноты могут быть в любом порядке).
Выход
Если аккорд мажорный, выведите «Major». Если аккорд минорный, выведите «Minor». Если аккорд не является мажорным или минорным, выведите пустую строку.
пример
вход
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
Тестовые сценарии
Как и в некоторых из моих прошлых вопросов, я еще раз вырезал некоторые тестовые сценарии, изначально созданные Джои и Вентеро, чтобы предоставить несколько тестовых примеров для этого вопроса:
Использование: ./test [your program and its arguments]
Награды
Каждая заявка, которую я могу проверить, которая соответствует спецификации, проходит тесты и, очевидно, была попытка сыграть в гольф, получит от меня отклик (поэтому, пожалуйста, предоставьте инструкции по использованию вместе с вашим ответом). Самое короткое решение к концу 13/10/2012 будет принято победителем.
Немного теории
Для тех из вас, у кого нет знания музыкальной теории, здесь достаточно информации, чтобы вы могли соревноваться.
Мажорный или минорный аккорд состоит из трех нот, которые разделены определенным рисунком полутонов. Если мы считаем, что корень (нижняя нота) аккорда равен 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
так далее. Каждый из этих вариантов по-прежнему второстепенный аккорд.