Труба є клапанним Аерофон інструменту, як правило , станом B♭
. Звук видається, коли гравець вібрує губами, щоб витіснити повітря всередині інструменту. Ця вібрація набувається шляхом встановлення рота певним чином, який називається етчур. Різні фасони, з більш щільними або пухкими губами, створюють різні смоли.
Крім того, кожен клапан у трубі також змінює крок інструменту. При натисканні клапан закриває шлях всередині трубки приладу, роблячи потік повітря більш довгим шляхом, тим самим знижуючи крок початкового звуку. Для цілей цього виклику ми розглянемо стандартну B♭
трубу, коли перший клапан знижує крок на повний крок, другий знижує крок на півкроку, а третій знижує крок на один і півкроку.
Змагання
Ваше завдання полягає в тому, щоб створити програму або функцію, яка з урахуванням двох входів embouchure
і valves
визначає висоту відтворення ноти.
Для цілей цього виклику примітки дотримуватимуться послідовності:
B♭, B, C, C♯, D, E♭, E, F, F♯, G, G♯, A.
Правила
- Введення / виведення можна приймати / давати будь-яким розумним методом .
- Застосовуються стандартні лазівки .
- Вам дозволяється використовувати
b
і#
замість цього,♭
і♯
якщо ви хочете. - Вхідні дані
valves
можуть сприйматися як список затиснених клапанів (1, 3
) або булевий список (1, 0, 1
). - Це код-гольф , тому найкоротший код на кожній мові виграє.
Випробування:
Valves
у цих тестових випадках подається у вигляді булевого списку, де 0 означає депресію та 1 - натиснуту.
Embouchure: Valves: Output:
B♭ 0 0 0 B♭
B♭ 0 1 0 A
B♭ 1 0 1 F
C♯ 0 0 1 B♭
C♯ 1 1 1 G
E♭ 1 0 0 C♯
G 0 1 1 E♭
G♯ 1 0 0 F♯
G♯ 0 0 1 F
G 1 0 0 F
F♯ 1 0 0 E
D 1 0 1 A
A 1 1 1 E♭
E 1 1 0 C♯
E 0 0 1 C♯
Відмова: Я ще не дуже музикант, тому прошу вибачення за будь-яке вбивство, яке я міг би зробити на тестах. Виправлення цінуються.
F# 100
бути E не F?
C#
на трубі, не натискаючи жодного клапана. Просто конкретні ноти ( B♭-F-B♭-D-F-A♭-B♭...
), ряд обертонів B♭
. Однак, навіть якщо це не відображає реальний інструмент, виклик ідеально чітко визначений.