Diretrizes
Tarefa
Dadas duas notas, inseridas como seqüências de caracteres ou listas / matrizes, calcule quantos semitons estão separados (inclusive as próprias notas), produzindo como um número.
Explicação de um semitom:
Um semitom é um passo para cima ou para baixo do teclado. Um exemplo é C para C #. Como você pode ver abaixo, a nota C está em uma nota branca e C # é a nota preta apenas uma acima dela. Semitons são os saltos de uma nota preta para a próxima nota branca, para cima ou para baixo, exceto:
- B a C
- C para B
- E a F
- F para E
Exemplos
'A, C' -> 4
'G, G#' -> 2
'F#, B' -> 6
'Bb, Bb' -> 13
Regras
- A maior distância entre duas notas é de 13 semitons.
- A segunda nota inserida estará sempre acima da primeira nota inserida.
- Você pode receber a entrada como uma sequência ou uma matriz / lista. Se você a usar como uma corda, as notas serão separadas por vírgula (por exemplo
String -> 'A, F'
,Array -> ['A', 'F']
). - Você pode assumir que sempre receberá duas notas válidas.
- Os objectos cortantes serão designados como
#
e os apartamentos serão designados comob
- Seu código deve suportar equivalentes enarmônicos (por exemplo, ele deve suportar F # e Gb)
- Seu código não precisa oferecer suporte a anotações nomeadas com, mas pode ser nomeado sem um ponto nítido ou plano (ou seja, você não precisa oferecer suporte a E # ou Cb). Pontos de bônus se o seu código o suportar.
- Seu código não precisa oferecer suporte a objetos cortantes ou planos duplos.
- Você pode supor que, se obtiver as mesmas notas ou o mesmo tom (por exemplo, 'Gb, Gb' ou 'A #, Bb'), o segundo não será exatamente uma oitava acima do primeiro.
- Isso é código de golfe, então a resposta com a menor quantidade de bytes ganha.
Cb
ou E#
? E os perfurocortantes duplos?
(X, Y]
maneira: C a C # é 1 semitom e C a C é 12 semitom.
G -> G#
porque são ambos incluídos.