Làm mới âm nhạc nhanh chóng:
Bàn phím piano bao gồm 88 nốt nhạc. Trên mỗi quãng tám, có 12 nốt, C, C♯/D♭, D, D♯/E♭, E, F, F♯/G♭, G, G♯/A♭, A, A♯/B♭
và B
. Mỗi lần bạn nhấn 'C', mẫu sẽ lặp lại quãng tám cao hơn.
Một ghi chú được xác định duy nhất bởi 1) chữ cái, bao gồm bất kỳ vật sắc nhọn hoặc căn hộ nào và 2) quãng tám, là một số từ 0 đến 8. Ba nốt đầu tiên của bàn phím, là A0, A♯/B♭
và B0
. Sau đó, thang màu đầy đủ trên quãng tám 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
và B1
. Sau đó, thang màu đầy đủ trên các quãng tám 2, 3, 4, 5, 6 và 7. Sau đó, ghi chú cuối cùng là a C8
.
Mỗi nốt tương ứng với một tần số trong dải 20-4100 Hz. Với việc A0
bắt đầu ở chính xác 27.500 hertz, mỗi ghi chú tương ứng là ghi chú trước nhân với gốc thứ mười hai của hai, hoặc khoảng 1.059463. Một công thức tổng quát hơn là:
Trong đó n là số ghi chú, với A0 là 1. (Thông tin thêm ở đây )
Các thách thức
Viết chương trình hoặc hàm lấy một chuỗi biểu thị một ghi chú và in hoặc trả về tần số của ghi chú đó. Chúng tôi sẽ sử dụng dấu #
thăng cho biểu tượng sắc nét (hoặc hashtag cho bạn trẻ) và chữ thường b
cho biểu tượng phẳng. Tất cả các đầu vào sẽ trông như (uppercase letter) + (optional sharp or flat) + (number)
không có khoảng trắng. Nếu đầu vào nằm ngoài phạm vi của bàn phím (thấp hơn A0 hoặc cao hơn C8) hoặc có ký tự không hợp lệ, thiếu hoặc thừa, đây là đầu vào không hợp lệ và bạn không phải xử lý nó. Bạn cũng có thể giả định một cách an toàn rằng bạn sẽ không nhận được bất kỳ đầu vào kỳ lạ nào như E # hoặc Cb.
Độ chính xác
Vì độ chính xác vô hạn không thực sự có thể, chúng tôi sẽ nói rằng bất cứ điều gì trong một phần trăm giá trị thực đều có thể chấp nhận được. Không đi sâu vào chi tiết, một xu là gốc thứ 1200 của hai, hoặc 1.0005777895. Hãy sử dụng một ví dụ cụ thể để làm cho nó rõ ràng hơn. Giả sử đầu vào của bạn là A4. Các chính xác giá trị của ghi chú này là 440 Hz. Một khi cent phẳng là 440 / 1.0005777895 = 439.7459
. 440 * 1.0005777895 = 440.2542
Do đó, một khi sắc nét là Do đó, bất kỳ số nào lớn hơn 439.7459 nhưng nhỏ hơn 440.2542 là đủ chính xác để đếm.
Các trường hợp thử nghiệm
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ãy nhớ rằng bạn không phải xử lý các đầu vào không hợp lệ. Nếu chương trình của bạn giả vờ rằng chúng là đầu vào thực và in ra một giá trị, điều đó có thể chấp nhận được. Nếu chương trình của bạn gặp sự cố, điều đó cũng được chấp nhận. Bất cứ điều gì có thể xảy ra khi bạn nhận được một. Để biết danh sách đầy đủ các đầu vào và đầu ra, xem trang này
Như thường lệ, đây là môn đánh gôn, vì vậy các sơ hở tiêu chuẩn được áp dụng và câu trả lời ngắn nhất tính theo byte sẽ thắng.
H
? H
có nghĩa là B là AFAIK chỉ được sử dụng ở các nước nói tiếng Đức. ( B
có nghĩa là Bb bằng cách này.) Những gì người Anh và Ailen gọi B được gọi là Si hoặc Ti ở Tây Ban Nha và Ý, như trong Do Re Mi Fa Sol La Si.
H
được sử dụng ở Đức, Cộng hòa Séc, Slovakia, Ba Lan, Hungary, Serbia, Đan Mạch, Na Uy, Phần Lan, Estonia và Áo, theo Wikipedia . (Tôi cũng có thể tự xác nhận nó cho Phần Lan.)