Pautas
Tarea
Dadas dos notas, ingresadas como cadenas o listas / matrices, calcule cuántos semitonos están separados (incluidas las notas en sí mismas), generando un número.
Explicación de un semitono:
Un semitono es un paso hacia arriba o hacia abajo del teclado. Un ejemplo es C a C #. Como puede ver a continuación, la nota C está en una nota blanca y C # es la nota negra, justo una arriba. Los semitonos son los saltos de una nota negra a la siguiente nota blanca, hacia arriba o hacia abajo, excepto por:
- B a C
- C a B
- E a F
- F a E
Ejemplos
'A, C' -> 4
'G, G#' -> 2
'F#, B' -> 6
'Bb, Bb' -> 13
Reglas
- La mayor distancia entre dos notas es de 13 semitonos.
- La segunda nota ingresada siempre estará por encima de la primera nota ingresada.
- Puede tomar la entrada como una cadena o como una matriz / lista. Si lo toma como una cadena, las notas estarán separadas por comas (por ejemplo
String -> 'A, F'
,Array -> ['A', 'F']
). - Puede suponer que siempre recibirá dos notas válidas.
- Los objetos punzantes se denotarán como
#
y los planos se denotarán comob
- Su código debe admitir equivalentes enarmónicos (por ejemplo, debe admitir F # y Gb)
- Su código no necesita admitir notas con nombres, pero se puede nombrar sin una nitidez o un plano (es decir, no necesita admitir E # o Cb). Sin embargo, puntos de bonificación si su código lo admite.
- Su código no necesita admitir objetos punzantes dobles o planos dobles.
- Puede suponer que si obtiene las mismas notas o el mismo tono (por ejemplo, 'Gb, Gb' o 'A #, Bb'), el segundo no será exactamente una octava por encima del primero.
- Este es el código de golf, por lo que gana la respuesta con la menor cantidad de bytes.
Cb
o E#
? ¿Qué pasa con los objetos punzantes / pisos dobles?
(X, Y]
modo que C a C # sea 1 semitono y C a C sea 12 semitonos.
G -> G#
porque ambos están incluidos.