빠른 음악 재생기 :
피아노 키보드는 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 Hz 범위의 주파수에 해당합니다. 으로 A0
정확히 27.500 헤르츠에서 시작하여, 각 해당 노트는 둘 또는 약 1.059463의 이전 노트 배 열 두번째 루트입니다. 보다 일반적인 공식은 다음과 같습니다.
여기서 n은 음표의 번호이며 A0은 1입니다 (자세한 정보는 여기 참조 ).
도전
메모를 나타내는 문자열을 받아서 해당 메모의 빈도를 인쇄하거나 반환하는 프로그램이나 함수를 작성하십시오. 우리는 #
날카로운 기호 (또는 당신을위한 해시 태그)에 파운드 기호 를 사용 b
하고 플랫 기호 에는 소문자 를 사용합니다. 모든 입력은 (uppercase letter) + (optional sharp or flat) + (number)
공백이없는 것처럼 보입니다 . 입력이 키보드 범위를 벗어 났거나 (A0보다 낮거나 C8보다 높음) 유효하지 않거나 누락되었거나 추가 된 문자가있는 경우 이는 잘못된 입력이므로 처리 할 필요가 없습니다. E # 또는 Cb와 같은 이상한 입력을받지 않을 것이라고 안전하게 가정 할 수도 있습니다.
정도
무한 정밀도는 실제로 불가능하기 때문에 우리는 실제 가치의 1 센트 이내의 모든 것이 허용 가능 하다고 말할 것입니다 . 지나치게 자세하게 설명하지 않으면 센트는 1200의 근이 2, 즉 1.0005777895입니다. 좀 더 명확하게하기 위해 구체적인 예를 사용하겠습니다. 입력 내용이 A4라고 가정하겠습니다. 이 노트 의 정확한 값은 440Hz입니다. 일단 센트 플랫입니다 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
비비는 방법으로 의미합니다.) 영국과 아일랜드 호 B가 할 일 도레미 빠 솔 라시에로, 스페인, 이탈리아, Si 또는 티라고 무엇.
H
에 따르면, 독일, 체코, 슬로바키아, 폴란드, 헝가리, 세르비아, 덴마크, 노르웨이, 핀란드, 에스토니아, 오스트리아에서 사용되는 위키 백과 . (또한 핀란드에서 직접 확인할 수도 있습니다.)