Подаючи список акордів, позначте їх як "Мажор" або "Малий".
Вхідні дані
Введенням буде список акордів, по одному на рядок, що складається з 3 нот, розділених пробілом. Кожна нота буде складатися з назви ноти у верхньому регістрі ( 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
Тестові сценарії
Як і в деяких моїх минулих питаннях, я ще раз підкреслив кілька тестових сценаріїв, створених Джої та Вентеро, щоб створити кілька тестових випадків для цього питання:
Використання: ./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
так далі. Кожна з цих варіацій все ще є мінорним акордом.