Wytyczne
Zadanie
Biorąc pod uwagę dwie nuty, wprowadzone jako ciągi znaków lub listy / tablice, obliczyć, ile są półtonów oddzielnie (w tym same nuty), wyprowadzając jako liczbę.
Objaśnienie półtonu:
Półton to jeden krok w górę lub w dół klawiatury. Przykładem jest C do C #. Jak widać poniżej, notatka C znajduje się na białej nucie, a C # to czarna nuta tylko jedna nad nią. Półtony to przeskoki od czarnej nuty do następnej białej nuty, w górę lub w dół, z wyjątkiem:
- Od B do C.
- C do B.
- E do F
- F do E
Przykłady
'A, C' -> 4
'G, G#' -> 2
'F#, B' -> 6
'Bb, Bb' -> 13
Zasady
- Największa odległość między dwiema nutami wynosi 13 półtonów.
- Druga wprowadzona nuta zawsze będzie znajdować się powyżej pierwszej wprowadzonej nuty.
- Możesz przyjmować dane wejściowe jako ciąg znaków lub tablicę / listę. Jeśli wziąć ją jako ciąg, Obligacje zostaną oddzielone przecinkami (np
String -> 'A, F'
,Array -> ['A', 'F']
). - Możesz założyć, że zawsze otrzymasz dwie ważne notatki.
- Ostre będą oznaczone jako,
#
a mieszkania będą oznaczone jakob
- Twój kod musi obsługiwać ekwiwalenty enharmoniczne (np. Musi obsługiwać zarówno F #, jak i Gb)
- Twój kod nie musi obsługiwać notatek o nazwach, ale można je nazwać bez ostrych lub płaskich znaków (tzn. Nie musisz obsługiwać E # ani Cb). Punkty bonusowe, jeśli Twój kod to obsługuje.
- Twój kod nie musi obsługiwać podwójnych narzędzi ani podwójnych mieszkań.
- Możesz założyć, że jeśli otrzymasz te same nuty lub ten sam ton (np. „Gb, Gb” lub „A #, Bb”), druga nie będzie dokładnie o jedną oktawę powyżej pierwszej.
- To jest kod golfowy, więc wygrywa odpowiedź z najmniejszą ilością bajtów.
Cb
lub E#
? A co z podwójnymi ostrymi narzędziami?
(X, Y]
sposób, że C do C # to 1 półton, a C do C to 12 półtonów.
G -> G#
ponieważ oba są uwzględnione.