트럼펫은 일반적으로 투구 밸브 형 기명 악기 악기입니다 B♭
. 플레이어가 입술을 진동시켜 악기 내부의 공기를 대체 할 때 소리가납니다. 이 진동은 입으로 불리는 특정한 방식으로 입을 설정함으로써 획득됩니다. 입술이 더 꽉 조여진 다양한 엠보싱은 다른 피치를 만들어냅니다.
또한 트럼펫의 각 밸브도 악기의 피치를 변경합니다. 눌려지면 밸브가 악기 튜브 내부의 경로를 닫아 공기가 더 긴 경로를 통과하도록하여 원래 사운드의 피치를 낮 춥니 다. 이 과제 B♭
를 위해 첫 번째 밸브가 피치를 전체 단계만큼 낮추고, 두 번째는 피치를 반 단계 낮추고, 세 번째는 피치를 1 씩 낮추는 표준 트럼펫을 고려합니다 . 반 단계.
도전
내 과제는 두 입력 주어진하는 프로그램이나 함수를 생성하는 것 embouchure
및 valves
, 재생되는 음의 피치를 결정한다.
이 도전의 목적을 위해, 노트는 순서를 따릅니다 :
B♭, B, C, C♯, D, E♭, E, F, F♯, G, G♯, A.
규칙
- 합리적인 방법으로 I / O를 수행 / 제공 할 수 있습니다 .
- 표준 허점이 적용됩니다.
- 당신이 사용할 수있는
b
및#
대신♭
하고♯
당신이하고자하는 경우. valves
감압 밸브 목록 (1, 3
) 또는 부울 목록 (1, 0, 1
)으로 입력 할 수 있습니다 .- 이것은 code-golf 이므로 각 언어에서 가장 짧은 코드가 승리합니다.
테스트 사례 :
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
F가 아닌 E 여야합니까 ?
C#
밸브를 누르지 않으면 서 트럼펫을 연주 할 수 없습니다 . 특정 음표 ( B♭-F-B♭-D-F-A♭-B♭...
), 음조 표 시리즈 B♭
. 그럼에도 불구하고 실제 악기를 반영하지 않더라도 문제는 완벽하게 정의되어 있습니다.