Bài tập
Viết chương trình xác định nốt nhạc phát ra, cùng với bao nhiêu xu ngoài giai điệu, của một chuỗi được điều chỉnh theo tần số cho trước và nhấn xuống tại một điểm nhất định.
Để đơn giản, giả sử rằng tần số của âm thanh được tạo ra và độ dài của chuỗi ở bên phải nơi nó được nhấn là tỷ lệ nghịch.
Lưu ý: tác vụ này chỉ xử lý ở giai điệu cơ bản, chứ không phải với âm bội / hài âm khác.
Đầu vào
Chương trình của bạn được cung cấp hai phần dữ liệu:
Một chuỗi có độ dài tùy ý, đại diện cho chuỗi trong câu hỏi. Chuỗi này sẽ được đánh dấu bằng X trong đó chuỗi được giữ.
[-----] is a string divided in six sections (five divisions). [--X--] is a string pressed at the exact center of the string. [X----] is a string pressed at 1/6 the length of the string. (Length used is 5/6) [-X--] is a string pressed at 2/5 of the length of the string. (Length used is 3/5)
Giả sử ghi chú được phát ra bằng cách sử dụng một phần của chuỗi ở bên phải của
X
.- Một số (không nhất thiết phải là số nguyên), biểu thị tần số mà chuỗi được điều chỉnh. Độ chính xác của số này sẽ có nhiều nhất là bốn chữ số qua số thập phân.
Có thể giả định rằng tần số được truyền sẽ nằm giữa 10 Hz
và 40000 Hz
.
Đầu vào có thể được thông qua trong một định dạng của sự lựa chọn của bạn. Vui lòng xác định cách nhập liệu được chấp nhận vào chương trình của bạn trong câu trả lời của bạn.
Đầu ra
Chương trình của bạn phải xuất cả ghi chú gần nhất * trong hệ thống điều chỉnh tính khí bằng nhau mười hai âm và số xu cách xa nốt gần nhất mà âm thanh được biểu thị bởi chuỗi sẽ là (làm tròn đến cent gần nhất).
+n
xu nên được sử dụng để biểu thị n
xu sắc nét / trên ghi chú và -n
xu cho căn hộ / bên dưới ghi chú.
Các ghi chú nên được xuất ra trong ký hiệu cao độ khoa học. Giả sử A4 được điều chỉnh đến 440Hz
. Sử dụng b và # cho ghi chú phẳng / sắc nét. Lưu ý: Có thể sử dụng sắc nét hoặc phẳng. Đối với ghi chú tại 466.16Hz
, A#
hoặc Bb
có thể được xuất ra cho ghi chú.
Định dạng đầu ra là tùy thuộc vào bạn, miễn là đầu ra chỉ chứa hai mẩu thông tin được chỉ định trước đó (nghĩa là in mọi đầu ra có thể không được phép).
* ghi chú gần nhất đề cập đến ghi chú gần nhất với âm thanh được biểu thị bằng đầu vào, được đo bằng số xu (do đó, ghi chú nằm trong 50 cents
âm thanh). Nếu âm thanh 50 cents
cách xa hai nốt khác nhau (sau khi làm tròn), thì một trong hai nốt có thể được xuất ra.
Ví dụ
Chương trình của bạn nên hoạt động cho tất cả các trường hợp, không chỉ các ví dụ sau.
Output Input Frequency Input String
A4, +0 cents 220 [-----X-----]
A5, +0 cents 220 [--------X--]
D5, -2 cents 440 [--X--------]
B4, -49 cents 440 [X----------]
A#4, +19 cents* 314.1592 [X-]
Eb9, +8 cents* 400 [-----------------------X]
Eb11,+8 cents* 100 [--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------X]
D#1, +49 cents* 10 [--X]
A0, -11 cents 11.7103 [---X--]
* Hoặc sắc hoặc phẳng có thể đã được xuất ra.
Liên kết hữu ích tiềm năng
Đây là môn đánh gôn nên câu trả lời ngắn nhất sẽ thắng.
[-X--]
chuỗi được chia ở 4 vị trí (và do đó thành 5 phần) và được nhấn ở phần thứ hai của các phần này. Vì vậy, nó được nhấn tại 2/5
, và chiều dài được sử dụng là 3/5
.
-
cơ bản đại diện cho vị trí của các bộ phận, cảm ơn bạn đã giải thích!
[--X--]
chuỗi đầu tiên , chuỗi được nhấn ở giữa bộ phậnx
được đặt, trong khi chuỗi cuối cùng[-X--]
sẽ ở 3/8 (không phải 2/5) khi tuân theo logic này. Hay tôi hiểu điều gì sai?