Die Trompete ist ein ventiliertes Aerophoninstrument, das normalerweise eingestimmt ist B♭
. Der Ton wird erzeugt, wenn der Player mit den Lippen vibriert, um die Luft im Inneren des Instruments zu verdrängen. Diese Schwingung wird dadurch erreicht, dass man den Mund auf eine bestimmte Art und Weise einstellt, die Embouchure genannt wird. Unterschiedliche Prägungen mit festeren oder lockereren Lippen erzeugen unterschiedliche Tonhöhen.
Darüber hinaus ändert jedes Ventil in der Trompete auch die Tonhöhe des Instruments. Durch Drücken eines Ventils wird ein Pfad im Inneren des Instrumentenschlauchs geschlossen, wodurch die Luft durch einen längeren Pfad strömt und somit die Tonhöhe des Originaltons verringert wird. Für die Zwecke dieser Herausforderung betrachten wir die Standard- B♭
Trompete, bei der das erste Ventil die Tonhöhe um eine volle Stufe absenkt, das zweite die Tonhöhe um eine halbe Stufe und das dritte die Tonhöhe um eins und a absenkt halber Schritt.
Die Herausforderung
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu erstellen, die bei zwei Eingaben embouchure
undvalves
der Tonhöhe der gespielten Note bestimmt.
Für die Zwecke dieser Herausforderung folgen die Notizen der Reihenfolge:
B♭, B, C, C♯, D, E♭, E, F, F♯, G, G♯, A.
Regeln
- I / O kann auf jede vernünftige Weise genommen / gegeben werden .
- Standard-Schlupflöcher gelten .
- Sie dürfen
b
und#
anstelle von♭
und verwenden,♯
wenn Sie möchten. - Die Eingabe für
valves
kann als Liste niedergedrückter Ventile (1, 3
) oder als Boolesche Liste (1, 0, 1
) erfolgen. - Das ist Code-Golf , also gewinnt der kürzeste Code in jeder Sprache.
Testfälle:
Valves
In diesen Testfällen wird eine Boolesche Liste angegeben, in der 0 für gedrückt und 1 für gedrückt steht.
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♯
Haftungsausschluss: Ich bin noch kein großer Musiker, daher entschuldige ich mich für die Schlachtung der Testfälle. Korrekturen sind erwünscht.
F# 100
E nicht F sein?
C#
auf einer Trompete spielen, ohne Ventile zu drücken. Nur bestimmte Noten ( B♭-F-B♭-D-F-A♭-B♭...
), die Obertonreihe von B♭
. Auch wenn es sich nicht um ein echtes Instrument handelt, ist die Herausforderung perfekt definiert.