งาน
เขียนโปรแกรมเพื่อตรวจสอบบันทึกที่ฟังพร้อมกับจำนวนเซ็นต์ที่ไม่ถูกต้องของสตริงที่ปรับให้เป็นความถี่ที่กำหนดและกดลงที่จุดที่กำหนด
เพื่อประโยชน์ของความเรียบง่ายสมมติว่าความถี่ของเสียงที่ผลิตและความยาวของสายไปทางขวาของที่มันถูกกดเป็นสัดส่วนผกผัน
หมายเหตุ: งานนี้เกี่ยวข้องเฉพาะกับน้ำเสียงพื้นฐานเท่านั้นและไม่ใช่ด้วยเสียงหวือหวา / เสียงประสานอื่น ๆ
อินพุต
โปรแกรมของคุณได้รับข้อมูลสองส่วน:
- สตริงที่มีความยาวไม่แน่นอนซึ่งแสดงถึงสตริงที่เป็นปัญหา สายนี้จะถูกทำเครื่องหมายด้วย 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 Hz40000 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) เมื่อทำตามตรรกะนี้ หรือฉันเข้าใจบางสิ่งผิดปกติ