Biorąc pod uwagę listę akordów oznacz je jako „Major” lub „Minor”.
Wejście
Wejście będzie listą akordów, po jednej w wierszu, złożoną z 3 nut oddzielonych spacją. Każda nuta będzie się składać z nazwy nuty pisanej wielkimi literami ( A
- G
) i opcjonalnego przypadkowego ( #
lub b
). Akordy mogą być w dowolnej inwersji (tzn. Nuty mogą być w dowolnej kolejności).
Wynik
Jeśli akord jest major, wyślij „Major”. Jeśli akord jest niewielki, wypisz „Minor”. Jeśli akord nie jest ani większy ani mniejszy, wypisz pusty wiersz.
Przykład
Wejście
C E G
F Ab C
C Eb Gb
E G B
Db F Ab
Bb G D
D A Gb
Wynik
Major
Minor
Minor
Major
Minor
Major
Skrypty testowe
Podobnie jak w niektórych moich poprzednich pytaniach, po raz kolejny opracowałem skrypty testowe pierwotnie stworzone przez Joeya i Ventero, aby zapewnić kilka przypadków testowych dla tego pytania:
Stosowanie: ./test [your program and its arguments]
Nagrody
Każdy wpis, który mogę zweryfikować, który spełnia specyfikację, przechodzi testy i oczywiście miał pewne próby gry w golfa, otrzyma ode mnie opinię (więc proszę o podanie instrukcji użytkowania wraz z odpowiedzią). Najkrótsze rozwiązanie do końca 13.10.2012 zostanie zaakceptowane jako zwycięzca.
Trochę teorii
Dla tych z was, którzy nie znają teorii muzyki, oto wystarczająca ilość informacji, aby móc konkurować.
Akord główny lub podrzędny składa się z trzech nut oddzielonych określonym wzorem półtonów. Jeśli weźmiemy pod uwagę rdzeń (dolną nutę) akordu jako 0, to główny akord jest wzorem 0-4-7, a mniejszy akord jest wzorem 0-3-7. Sprawa jest jeszcze bardziej niezręczna z powodu faktu, że niektóre nuty są oddzielone półtonem, a niektóre tonem. Rozpiętość półtonów od Ab
- G#
jest następująca:
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
oznacza, że G#
jest to ta sama uwaga co Ab
. Z tego wynika, że akord Ab C Eb
jest akordem głównym, a to Ab Cb Eb
jest niewielkie.
Aby skomplikować sprawy dalej, akord Eb Cb Ab
jest uważany za tak samo jak Ab Cb Eb
, Cb Eb Ab
a Cb Ab Eb
i tak dalej. Każda z tych odmian jest wciąż niewielkim akordem.