Швидке музичне оновлення:
Клавіатура фортепіано складається з 88 нот. На кожній октаві - 12 нот C, C♯/D♭, D, D♯/E♭, E, F, F♯/G♭, G, G♯/A♭, A, A♯/B♭
та B
. Кожен раз, коли ви натискаєте "C", візерунок повторюється на октаву вище.
Примітка однозначно ідентифікується 1) буквою, включаючи будь-які різки або плоскі, і 2) октавою, що є числом від 0 до 8. Перші три ноти клавіатури є A0, A♯/B♭
і B0
. Після цього настає повна хроматична шкала на октаві 1. C1, C♯1/D♭1, D1, D♯1/E♭1, E1, F1, F♯1/G♭1, G1, G♯1/A♭1, A1, A♯1/B♭1
і B1
. Після цього надходить повна хроматична шкала на октавах 2, 3, 4, 5, 6 і 7. Потім, остання нота - а C8
.
Кожна нота відповідає частоті в діапазоні 20-4100 Гц. З A0
початком рівно 27.500 герц, кожна з яких відповідає нота попередніх часів примітки дванадцятого корінь з двох, або приблизно 1.059463. Більш загальна формула:
де n - номер примітки, причому A0 дорівнює 1. (Детальніше тут )
Змагання
Напишіть програму або функцію, яка містить рядок, що представляє нотатку, і друкує або повертає частоту нотатки. Ми будемо використовувати знак фунта #
для гострого символу (або хештега для вас, молодняка), а малий b
для плоского символу. Усі входи будуть виглядати як (uppercase letter) + (optional sharp or flat) + (number)
без пробілів. Якщо вхід знаходиться за межами діапазону клавіатури (нижче А0 або вище С8), або є недійсні, відсутні або зайві символи, це вхід недійсний, і вам не потрібно його обробляти. Ви також можете з упевненістю припустити, що ви не отримаєте жодних дивних вкладів, таких як E # або Cb.
Точність
Оскільки нескінченна точність насправді неможлива, ми скажемо, що будь-що в межах одного цента від справжнього значення є прийнятним. Не вдаючись до зайвих деталей, цент - це 1200-й корінь з двох, або 1.0005777895. Скористаємося конкретним прикладом, щоб зробити це більш зрозумілим. Скажімо, ваш внесок був A4. Точне значення цього слід відзначити 440 Гц. Колись цент є плоским 440 / 1.0005777895 = 439.7459
. 440 * 1.0005777895 = 440.2542
Отже, різкий один цент є Отже, будь-яке число, що перевищує 439,7459, але менше 440,2542, є достатньо точним для підрахунку.
Тестові кейси
A0 --> 27.500
C4 --> 261.626
F#3 --> 184.997
Bb6 --> 1864.66
A#6 --> 1864.66
A4 --> 440
D9 --> Too high, invalid input.
G0 --> Too low, invalid input.
Fb5 --> Invalid input.
E --> Missing octave, invalid input
b2 --> Lowercase, invalid input
H#4 --> H is not a real note, invalid input.
Майте на увазі, що вам не доведеться обробляти недійсні введення. Якщо ваша програма робить вигляд, що вони є реальними вхідними даними та виводить значення, це прийнятно. Якщо ваша програма виходить з ладу, це також прийнятно. Все, що може статися, коли ви отримаєте його. Повний список входів і виходів див. На цій сторінці
Як завжди, це код-гольф, тому застосовуються стандартні лазівки, і найкоротша відповідь у байтах виграє.
H
? H
значення B - AFAIK використовується лише в німецькомовних країнах. (де B
до речі означає Bb.) Те, що британці та ірландці називають B, в Іспанії та Італії називають Si або Ti, як у Do Re Mi Fa Sol La Si.
H
використовується в Німеччині, Чехії, Словаччині, Польщі, Угорщині, Сербії, Данії, Норвегії, Фінляндії, Естонії та Австрії, повідомляє Wikipedia . (Я також можу це підтвердити для Фінляндії самостійно.)