पृष्ठभूमि
पश्चिमी संगीत में, हर एक संगीत नोट में एक निर्दिष्ट नाम होता है। प्रत्येक सप्तक के भीतर, निम्नलिखित क्रम में बारह अनोखे नोट हैं: "CC # / Db DD # / Eb EFF # / Gb GG # / Ab AA # / Bb B C", जहां अंतिम C पहले के ऊपर एक सप्तक है।
अलग-अलग सप्तक के नोटों के बीच अंतर बताने के लिए, नोट के नाम के अंत में एक संख्या (एकल अंक तक सीमित इस चुनौती के लिए) को जोड़ा जाता है। इस प्रकार, C5 नोट है जो C4 के ऊपर एक सप्तक है। Bb6 B5 से ऊपर है।
एक महत्वपूर्ण तथ्य यह है कि बी 5 और सी 6 ऐसे नोट हैं जो एक दूसरे के ठीक बगल में हैं, और यह कि C0 और B9 सबसे कम और उच्चतम नोट हैं।
किसी भी दो नोटों के बीच, एक दूरी होती है, जो उनके बीच के सेमिटोन्स की संख्या होती है। B4, B4 के नीचे एक अर्धविराम है, जो C5 के नीचे स्वयं एक अर्धविराम है। एक सप्तक में बारह अर्धवृत्त हैं, इसलिए Bb4 A # 3 से 12 की दूरी पर है क्योंकि यह ऊपर एक सप्तक है (ध्यान दें कि एक नोट में दो नामों तक कैसे हो सकता है)।
चुनौती
आपकी चुनौती सबसे कम संभव कार्यक्रम लिखना है जो एसटीडीआईएन से संगीत नोटों की एक सूची ले सकता है और एसटीडीयूएसटी में अंतराल परिवर्तनों की सूची प्रिंट कर सकता है।
इनपुट संगीत नोटों की एक अलग-अलग सूची होगी। प्रत्येक नोट में एक अपरकेस अक्षर एजी, एक वैकल्पिक बी या # साइन, और एक एकल अंक संख्या शामिल होगी। आपको E # / Fb या B # / Cb से नहीं निपटना पड़ेगा। उदाहरण इनपुट:
C4 D4 E4 F4 G4 A4 B4 C5 C4
आउटपुट पूर्णांकों की एक अलग-अलग-अलग सूची होगी जो प्रत्येक क्रमिक नोट के बीच की दूरी का प्रतिनिधित्व करती है, हमेशा एक + या - के साथ उपसर्ग करती है यह दिखाने के लिए कि क्या नोट एक से पहले आरोही या अवरोही के सापेक्ष था। हमेशा इनपुट किए गए नोटों की तुलना में एक कम संख्या में आउटपुट होगा। उपरोक्त इनपुट के लिए उदाहरण आउटपुट:
+2 +2 +1 +2 +2 +2 +1 -12
कुछ और उदाहरण इनपुट:
E5 D#5 E5 B4 E5 F#5 E5 B4
C0 B0 Bb1 A2 G#3 G4 F#5 F6
G4 Ab4 Gb4 A4 F4 A#4
और उनके अनुरूप आउटपुट:
-1 +1 -5 +5 +2 -2 -5
+11 +11 +11 +11 +11 +11 +11
+1 -2 +3 -4 +5
नियम और प्रतिबंध
स्रोत कोड में वर्णों की संख्या से विजेता निर्धारित होता है
आपके कार्यक्रम में केवल मुद्रण योग्य ASCII वर्ण शामिल होने चाहिए
आपको किसी भी प्रकार के अंतर्निहित फ़ंक्शन का उपयोग करने की अनुमति नहीं है जो संगीत या ध्वनि से संबंधित है
इसके अलावा, मानक कोड गोल्फ नियम लागू होते हैं
+0
या-0
या0
दो समान नोट्स के लिए?