दो नोट नामों को देखते हुए, आपको एक प्रोग्राम लिखना है जो निर्धारित करता है कि इन दो नोटों द्वारा गठित अंतराल व्यंजन या असंगत है।
परिचय
पश्चिमी संगीत में, केवल 12 "भिन्न" स्वर हैं। उनके नाम, सबसे कम से लेकर उच्चतम तक क्रमबद्ध हैं, ये हैं C, C#, D, D#, E, F, F#, G, G#, A, A#, B
:। अनुक्रम चक्रीय है, अर्थात यह एक के C
बाद दूसरे B
, अनंत रूप से जारी है ।
दो स्वरों के बीच की दूरी को एक अंतराल कहा जाता है । किसी भी दो नोटों के बीच का अंतराल जो ऊपर की श्रृंखला में (जैसे C — C#
या E — F
) समीपवर्ती होता है, एक अर्धविराम कहलाता है । अधिक दूर के नोटों के बीच के अंतराल को पहले से दूसरे (जबकि संभवतः अनुक्रम के चारों ओर लपेटते हुए) प्राप्त करने के लिए आवश्यक सेमिटोन चरणों की संख्या के रूप में परिभाषित किया गया है। कुछ उदाहरण: D to E
= 2 सेमीटोन, C to G
= 7 सेमीटोन, B to D#
= 4 सेमीटोन (यह अनुक्रम के चारों ओर लपेटता है)। 1
अब, इन अंतरालों को दो श्रेणियों में विभाजित किया गया है: व्यंजन (सुखद ध्वनि अगर आप एक साथ दो नोट खेलते हैं) और असंगत (इतना नहीं)।
चलो व्यंजन के अंतराल को परिभाषित करते हैं: 0, 3, 4, 5, 7, 8 और 9 सेमीटोन।
उनमें से शेष असंगत हैं, अर्थात्: 1, 2, 6, 10 और 11 अर्धवृत्त।
चुनौती
निम्नलिखित करने के लिए एक "प्रोग्राम" (शब्द के सामान्य अर्थ में: एक फ़ंक्शन पूरी तरह से ठीक है) लिखें:
इनपुट के रूप में दो नोट नाम (ऊपर के क्रम से तार) लें। आप उन्हें अपनी पसंद के अनुसार ले सकते हैं (स्टैडिन से, तर्कों के रूप में, जो कुछ भी आप चाहते हैं, उन्हें अलग कर सकते हैं, यहां तक कि उन्हें वर्णों की सूची के रूप में लेने के लिए स्वतंत्र महसूस
["C","#"]
कर सकते हैं। हो सकता है उन्हें 0 से 11 तक संख्या न दें और संख्याओं का उपयोग करें)।आपके लिए वहां संगीत गीक्स हैं, नोटों को ओक्टेव के बिना निर्दिष्ट किया जाएगा। इस मामले में, यह भी कोई फर्क नहीं पड़ता कि नोट किस क्रम में आते हैं और कौन सा कम है और कौन सा अधिक है। अंत में, आपको ऊपर की सूची में किसी भी नाम को संभालने की आवश्यकता नहीं है। कोई अन्य एनर्जोनिक्स जैसे
E#
, कोई फ़्लैट, डबल-परिवर्तन और इतने पर नहीं।कोई भी दो अलग-अलग मान चुनें। जब भी इनपुट में दो नोटों द्वारा गठित अंतराल व्यंजन हो, और दूसरा अगर वे नहीं हैं, तो आपके प्रोग्राम को उनमें से एक को आउटपुट करना होगा। (
True
और हो सकता हैFalse
, लेकिन यहां तक कि π और ई अगर आप चाहते हैं :))यह एक कोड-गोल्फ है। प्रत्येक भाषा में बाइट्स में सबसे छोटा प्रोग्राम जीत जाता है। मज़े करो!
उदाहरण और परीक्षण मामले
Note 1 Note 2 Output Interval [semitones]
C D Dissonant 2
A# A# Consonant 0
G D Consonant 7 (wraparound)
D# A Dissonant 6
F E Dissonant 11
A C Consonant 3
मैं उनमें से अधिक नहीं जोड़ता क्योंकि इसमें कोई विशेष रूप से विश्वासघाती मामले नहीं हैं।
यह मेरी पहली चुनौती है, इसलिए किसी भी रचनात्मक आलोचना का गर्मजोशी से स्वागत है: यदि आपको थ्योरी स्पष्टीकरण सुस्त लगता है, तो बेझिझक सवाल पूछें। अंत में, मुझे मत बताओ कृपया है कि इस का एक शिकार है इस या इस । मैंने सुनिश्चित किया कि यह नहीं है। (उत्तरार्द्ध काफी समान है लेकिन अधिक जटिल है। मैंने सोचा कि थोड़ी सरल चुनौती देना लोगों के लिए जुड़ने में आसान होगा।)
1 : मैंने जहाँ तक हो सके इस स्पष्टीकरण को सरल बनाने की कोशिश की। अंतराल के आसपास बहुत अधिक सिद्धांत है। कृपया इसे छोड़ने के लिए मुझे कोसें नहीं।