Керівні принципи
Завдання
З огляду на дві нотатки, введені у вигляді рядків або списків / масивів, обчисліть, скільки на них є півтонів (включаючи самі нотатки), виводячи як число.
Пояснення півтона:
Півтон - це один крок вгору або вниз по клавіатурі. Приклад - від C до C #. Як ви бачите нижче, примітка C - на білій ноті, а C # - чорна нота, лише одна над нею. Семітони - це стрибки від чорної ноти до наступної білої ноти вгору або вниз, за винятком:
- Від B до C
- З до В
- E до F
- F до E
Приклади
'A, C' -> 4
'G, G#' -> 2
'F#, B' -> 6
'Bb, Bb' -> 13
Правила
- Найбільша відстань між двома нотами - 13 півтонів.
- Друга введена примітка завжди буде вище першої введеної примітки.
- Ви можете приймати дані як рядок, чи масив / список. Якщо ви сприймаєте це як рядок, примітки будуть розділені комами (наприклад
String -> 'A, F'
,Array -> ['A', 'F']
). - Ви можете припустити, що вам завжди будуть надані дві дійсні примітки.
- Різки будуть позначатися як,
#
а квартири - якb
- Ваш код повинен підтримувати енгармонічні еквіваленти (наприклад, він повинен підтримувати і F #, і Gb)
- У вашому коді не потрібно підтримувати нотатки, позначені іменем, але їх можна назвати без різких або плоских (тобто вам не потрібно підтримувати E # або Cb). Бонусні бали, якщо ваш код все-таки підтримує його.
- Ваш код не потребує підтримки подвійних різких або подвійних квартир.
- Ви можете припустити, що якщо ви отримаєте обидва однакові ноти або однаковий крок (наприклад, 'Gb, Gb' або 'A #, Bb'), другий не буде точно на одну октаву вище першого.
- Це кодовий гольф, тому відповідь з найменшою кількістю байтів виграє.
Cb
або E#
? А як щодо подвійних гостриків / квартир?
(X, Y]
так, що C до C # - 1 півтон, а C - C - 12 півтонів.
G -> G#
бо вони обидва включені.