Entrada
O símbolo de qualquer acorde triádico (consulte http://en.wikipedia.org/wiki/Chord_(music)#Triads ).
Saída
As notas que constituem o acorde dado.
Exemplos
Entrada: AM
Saída:A C# E
Entrada: C#m
Saída:C# E G#
Entrada: Db+
Saída:C# F A
Entrada: C0
Saída:C D# F#
Bônus
-50 se você também pode lidar com sétimos acordes
-150 para realmente tocar o som do acorde
-150 para usar caracteres imprimíveis para mostrar como tocar o acorde em um piano; exemplo para AM
:
┌─┬─┬┬─┬─┬─┬─┬┬─┲┱─┬─┬─┲━┱┬─┲━┱─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ┃┃ │ │ ┃ ┃│ ┃ ┃ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ┃┃ │ │ ┃ ┃│ ┃ ┃ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ┃┃ │ │ ┃ ┃│ ┃ ┃ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┲┛┗┱┘ │ ┗┯┛└┲┛ ┃ └┬┘└┬┘└┬┘ │
│ │ │ │ │ ┃ ┃ │ │ ┃ ┃ │ │ │ │
└──┴──┴──┴──┴──┺━━┹──┴──┴──┺━━┹──┴──┴──┴──┘
-100 para usar caracteres imprimíveis para mostrar como tocar o acorde em uma guitarra; exemplo para AM
:
x o o o o o
┌───┬───┬───┬───┬───┐
│ │ │ │ │ │
├───┼───┼───┼───┼───┤
│ │ │ │ │ │
├───┼───┼───┼───┼───┤
│ │ █ █ █ │
├───┼───┼───┼───┼───┤
│ │ │ │ │ │
(consulte https://en.wikipedia.org/wiki/Box-drawing_character )
Regras
O resultado deve ser um programa ou script de linha de comando.
A entrada e a saída podem ser de qualquer forma, desde que sigam um padrão de notação musical.
Uma representação de violão ou piano é considerada válida se e somente se contiver as três (triádicas) ou as quatro (sétimas) notas necessárias e nada mais. A mesma nota pode estar presente várias vezes no acorde.
Bibliotecas externas não são permitidas, exceto para geração de som (nesse caso
#include
, asimport
diretivas ... não são adicionadas à contagem de caracteres).Este é o código de golfe, o código mais curto vence!
Um pouco de teoria musical ...
Na música tonal ocidental moderna, cada oitava é composta por doze notas sucessivas, frequentemente observadas:
A
A#
B
C
C#
D
D#
E
F
F#
G
G#
Ou:
La
La#
Si
Do
Do#
Re
Re#
Mi
Fa
Fa#
Sol
Sol#
Neste sistema, consideramos que duas notas sucessivas (por exemplo , A
e A#
, ou E
e F
) são separadas por um semitom. Além disso, as notas são uma espécie de "loop": o que se segue imediatamente G#
é A
.
Um acorde é constituído por algumas (2, 3, 4, às vezes mais) notas que "soam bem juntas". Por exemplo, acordes triádicos contêm três notas diferentes e acordes da sétima contêm quatro notas diferentes.
Vamos definir os quatro acordes triádicos como:
Tríade maior : contém a raiz do acorde (nesta pergunta, a nota dada como entrada), o terço maior da raiz (4 semitons acima da raiz) e o quinto perfeito para a raiz (7 semitons acima da raiz) ); isso pode ser simbolizado 0-4-7
Tríade menor , simbolizada 0-3-7
Tríade aumentada , simbolizada 0-4-8
Tríade diminuída , simbolizada 0-3-6
Assim, por exemplo, se você quiser fazer uma tríade maior C , observou C
, CM
, Cmaj
, você vai precisar de três observou:
- 0: a raiz , neste caso, um
C
- 4: o terço menor , 4 semitons acima da raiz; isso é um
E
- 7: o quinto perfeito , 7 semitons acima da raiz: a
G
Isto é o que a 0-4-7
, 0-3-7
, 0-4-8
e 0-3-6
notações usadas acima de média! Para os sétimos acordes, use o seguinte padrão:
Por hoje é isso! Agora, surpreenda-me com um código incrível ... Se você tiver alguma dúvida, adicione alguns comentários abaixo.
Db+
é que Db F A
não há D # ou G lá. Talvez seja um pouco mais teoria do que o necessário, as fórmulas eram a parte importante. Se você realmente deseja incluir todos os oito dos sétimos acordes listados na wikipedia, você deve especificar a entrada. Presumo que a produção artística do piano e da guitarra seja flexível.