कार्य
नोट को निर्धारित करने के लिए एक प्रोग्राम लिखें, साथ ही कितने टेंट से बाहर निकलते हैं, एक दिए गए फ्रिक्वेंसी से जुड़े स्ट्रिंग के नीचे और एक दिए गए बिंदु पर दबाया जाता है।
सादगी के लिए, मान लें कि ध्वनि की आवृत्ति और स्ट्रिंग की लंबाई जहां इसे दबाया गया है, उसके विपरीत आनुपातिक हैं।
नोट: यह कार्य केवल मूल स्वर में है, न कि ओवरटोन / अन्य हार्मोनिक्स के साथ।
इनपुट
आपके कार्यक्रम को दो टुकड़े दिए गए हैं:
मनमानी लंबाई की एक स्ट्रिंग, जो प्रश्न में स्ट्रिंग का प्रतिनिधित्व करती है। यह स्ट्रिंग एक एक्स के साथ चिह्नित की जाएगी जहां स्ट्रिंग को नीचे रखना है।
[-----] 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
टिप्पणी के लिए outputted जा सकता है।
आउटपुट का प्रारूप आपके ऊपर है, जब तक कि आउटपुट में जानकारी के केवल दो पहले से निर्दिष्ट टुकड़े होते हैं (यानी हर एक संभावित आउटपुट को प्रिंट करने की अनुमति नहीं है)।
* निकटतम नोट उस नोट को संदर्भित करता है जो इनपुट द्वारा निरूपित ध्वनि के सबसे करीब है, सेंट की संख्या में मापा जाता है (इसलिए, वह नोट जो 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 नहीं) पर होगा। या मैं कुछ गलत समझ रहा हूं?