Dada uma lista de acordes, identifique-os como 'Maior' ou 'Menor'.
Entrada
A entrada será uma lista de acordes, um por linha, composta de 3 notas separadas por um espaço. Cada nota consistirá no nome da nota em maiúsculas ( A
- G
) e um acidental ( #
ou b
) opcional . Os acordes podem estar em qualquer inversão (ou seja, as notas podem estar em qualquer ordem).
Resultado
Se o acorde for maior, produza 'Maior'. Se o acorde for menor, produza 'Menor'. Se o acorde não for maior nem menor, produza uma linha em branco.
Exemplo
Entrada
C E G
F Ab C
C Eb Gb
E G B
Db F Ab
Bb G D
D A Gb
Resultado
Major
Minor
Minor
Major
Minor
Major
Scripts de teste
Como em algumas das minhas perguntas anteriores, mais uma vez massacrei alguns scripts de teste criados originalmente por Joey e Ventero para fornecer alguns casos de teste para esta pergunta:
Uso: ./test [your program and its arguments]
Recompensas
Cada entrada que eu possa verificar que atenda às especificações, passa nos testes e obviamente teve alguma tentativa de jogar golfe receberá um voto positivo de mim (por isso, forneça instruções de uso com sua resposta). A solução mais curta até o final de 13/10/2012 será aceita como vencedora.
Um pouco de teoria
Para aqueles que não têm conhecimento de teoria musical, aqui estão informações suficientes para poder competir.
Um acorde maior ou menor é composto de três notas que são separadas por um padrão específico de semitons. Se considerarmos que a raiz (nota inferior) do acorde é 0, um acorde maior é o padrão 0-4-7 e um acorde menor é o padrão 0-3-7. As coisas ficam mais estranhas pelo fato de que algumas notas são um semitom à parte e outras são um tom à parte. A propagação de semitons de Ab
- G#
é a seguinte:
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
significa que essa G#
é a mesma nota que Ab
. A partir disso, podemos ver que o acorde Ab C Eb
é um acorde maior e Ab Cb Eb
menor.
Para complicar ainda mais, o acorde Eb Cb Ab
é considerado o mesmo que Ab Cb Eb
, Cb Eb Ab
e Cb Ab Eb
e assim por diante. Cada uma dessas variações ainda é um acorde menor.