งาน
เขียนโปรแกรมเพื่อตรวจสอบบันทึกที่ฟังพร้อมกับจำนวนเซ็นต์ที่ไม่ถูกต้องของสตริงที่ปรับให้เป็นความถี่ที่กำหนดและกดลงที่จุดที่กำหนด
เพื่อประโยชน์ของความเรียบง่ายสมมติว่าความถี่ของเสียงที่ผลิตและความยาวของสายไปทางขวาของที่มันถูกกดเป็นสัดส่วนผกผัน
หมายเหตุ: งานนี้เกี่ยวข้องเฉพาะกับน้ำเสียงพื้นฐานเท่านั้นและไม่ใช่ด้วยเสียงหวือหวา / เสียงประสานอื่น ๆ
อินพุต
โปรแกรมของคุณได้รับข้อมูลสองส่วน:
สตริงที่มีความยาวไม่แน่นอนซึ่งแสดงถึงสตริงที่เป็นปัญหา สายนี้จะถูกทำเครื่องหมายด้วย X ที่สตริงจะถูกค้างไว้
[-----] 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)
X
สมมติทราบจะฟังโดยใช้ส่วนหนึ่งของสตริงไปทางขวาของ- ตัวเลข (ไม่จำเป็นต้องเป็นจำนวนเต็ม) หมายถึงความถี่ที่ปรับค่าสตริง ความแม่นยำของตัวเลขนี้จะต้องไม่เกินสี่หลักที่ผ่านทศนิยม
มันอาจจะสันนิษฐานว่าความถี่ผ่านจะอยู่ระหว่างและ10 Hz
40000 Hz
อินพุตอาจถูกส่งผ่านในรูปแบบที่คุณเลือก โปรดระบุวิธีรับข้อมูลเข้าในโปรแกรมของคุณในคำตอบของคุณ
เอาท์พุต
โปรแกรมของคุณจะต้องส่งออกทั้งบันทึกย่อที่ใกล้เคียงที่สุด * ในระบบปรับแต่งอารมณ์สิบสองโทนและจำนวนของเซ็นต์ห่างจากบันทึกที่ใกล้เคียงที่สุดว่าเสียงที่แสดงโดยสตริงจะเป็น (ปัดเศษเป็นร้อยละที่ใกล้ที่สุด)
+n
ควรใช้n
เซ็นต์เพื่อแสดงถึงความคมชัด / เหนือโน้ตและ-n
เซนต์สำหรับแบน / ต่ำกว่าโน้ต
ควรมีการแสดงข้อความในเครื่องหมายพิทช์ทางวิทยาศาสตร์ สมมติ A4 440Hz
ได้ปรับไป ใช้ b และ # สำหรับบันทึกย่อ / แบน หมายเหตุ: อาจใช้ความคมหรือแบนก็ได้ สำหรับบันทึกที่466.16Hz
ทั้งA#
หรือBb
อาจจะออกมาสำหรับการบันทึก
รูปแบบของผลลัพธ์ขึ้นอยู่กับคุณตราบใดที่ผลลัพธ์มีเพียงข้อมูลสองชิ้นที่ระบุก่อนหน้านี้เท่านั้น (เช่นไม่อนุญาตให้พิมพ์ทุกผลลัพธ์ที่เป็นไปได้เดียว)
* หมายเหตุที่ใกล้เคียงที่สุดหมายถึงโน้ตที่ใกล้เคียงที่สุดกับเสียงที่แสดงโดยอินพุตซึ่งวัดในจำนวนของเซ็นต์ (ดังนั้นโน้ตที่อยู่ภายใน50 cents
เสียง) หากเสียงอยู่50 cents
ห่างจากบันทึกสองอันที่แตกต่างกัน (หลังจากการปัดเศษ) บันทึกย่อทั้งสองอย่างใดอย่างหนึ่งอาจถูกส่งออก
ตัวอย่าง
โปรแกรมของคุณควรทำงานได้กับทุกกรณีไม่ใช่เพียงตัวอย่างต่อไปนี้
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--]
* อาจมีความคมหรือแบน
ลิงค์ที่มีประโยชน์
นี่คือ รหัสกอล์ฟ คำตอบที่สั้นที่สุดชนะ
[-X--]
สตริงถูกแบ่งที่ 4 แห่ง (และดังนั้นจึงมี 5 ส่วน) และกดที่ส่วนที่สองของแผนกเหล่านี้ ดังนั้นจึงมีการกดที่และระยะเวลาที่ใช้2/5
3/5
-
เป็นตัวแทนของหน่วยงานขอบคุณที่อธิบาย!
[--X--]
สตริงแรกจะถูกกดที่กึ่งกลางของส่วนที่x
วางไว้ในขณะที่อันสุดท้าย[-X--]
จะอยู่ที่ 3/8 (ไม่ใช่ 2/5) เมื่อทำตามตรรกะนี้ หรือฉันเข้าใจบางสิ่งผิดปกติ