एक मानक पियानो पर 88 कुंजी और 95 मुद्रण योग्य अस्की चरित्र (7E के माध्यम से हेक्स कोड 20) हैं:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
('चरित्र' यहाँ से किसी भी मुद्रण योग्य-ASCII वर्ण को संदर्भित करता है)
में इस JSFiddle मुझे लगता है कि का लाभ ले लिया और एक सरल वाक्य रचना का उपयोग कर पियानो धुनों उत्पन्न कर दिया है AudioSynth । (अगर कोई मुझे असली पियानो नोट ध्वनियों के लिंक करने योग्य सेट पर निर्देशित कर सकता है तो मैं आभारी रहूंगा।)
इनपुट स्ट्रिंग में प्रत्येक वर्ण () 01+-
एक पियानो कुंजी से मेल खाता है:
CHARACTER: ! " # $ % & ' * , . / 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
KEY NUMBER: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
NOTE: A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C
OCTAVE: 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 8
तो मैरीRPNPRRR
के पहले 7 नोट्स खेलता है जिसमें पूर्व निर्धारित समय के मापदंडों का उपयोग करके थोड़ा सा मेमने था जिसे आप JSFiddle में देख सकते हैं।
अंतरिक्ष ( ) एक संगीत विश्राम का प्रतिनिधित्व करता है जो एक नोट अंतराल के लिए रहता है। तो
RPNPRRR PPP RUU
मैरी के पहले 13 नोटों में लिटिल लैम्ब था जो अपने उचित स्थानों पर टिकी हुई है।
यदि इसके अलावा किसी भी वर्ण ()01
को 0
's और 1
' s (regex [01]+
) के अनुक्रम से उपसर्ग किया जाता है , तो उस अनुक्रम को एक बाइनरी संख्या b के रूप में पढ़ा जाता है , और चरित्र को स्वयं की b प्रतियों से बदल दिया जाता है। तो इसलिए 101A11 10+1-0B01C
बनता है AAAAA ++-C
क्योंकि 101
= 5, 11
= 3, आदि ( स्ट्रिंग के अंत में 0
's और 1
' s का कोई प्रभाव नहीं है।)
मिलान किए गए कोष्ठक ( ()
) दो उद्देश्य हैं:
- यदि उनकी सामग्री 's' और 's ' के अनुक्रम के साथ समाप्त नहीं होती है , तो सभी नोट्स एक ही समय पर एक राग के रूप में खेले जाते हैं (जो अन्यथा नोट से अलग नहीं है)। तो ऑक्टेव पर एक सी मामूली राग है 4.
यदि नकली नोट मौजूद हैं तो उनकी ध्वनि भी दोहराई गई है। तो और ध्वनि अलग है।
0
1
(NQU)
(NN)
(NNN)
- अपनी सामग्री तो करता है की एक श्रृंखला के साथ अंत
0
की और1
की, कि अनुक्रम एक द्विआधारी संख्या के रूप में पढ़ा जाता है ख , और कोष्ठक और उनकी सामग्री के साथ बदल रहे हैं ख सामग्री की प्रतियां। तो(NQU11)
9 व्यक्तिगत नोट बन जाता हैNQUNQUNQU
:।
कोष्ठक विवरण:
- नेस्टिंग प्रतिलिपिकारक कोष्ठकों (प्रयोजन 2) ठीक है:
(N(QU10)11)
→(NQUQU11)
→NQUQUNQUQUNQUQU
। - गैर-नकल करने वाले कोष्ठक (उद्देश्य 1) ठीक है, लेकिन इसका कोई प्रभाव नहीं है:
(A((+)C))
जैसा ही है(A+C)
। - तुम भी दोनों को जोड़ सकते हैं:
((N(QU10))11)
→(NQUQU)(NQUQU)(NQUQU)
। - गैर-प्रतिकृति वाले कोष्ठकों से पहले 's
0
' का अनुक्रम1
उन्हें उसी तरह से दोहराता है जिस तरह से व्यक्तिगत पात्रों को दोहराया जाता है। तो10(NQU)
बन जाता है(NQU)(NQU)
। - कोष्ठक की प्रतिकृति बनाने से पहले 's'
0
और1
's ' के अनुक्रम का कोई प्रभाव नहीं होता है। (
हमेशा एक मिलान होना चाहिए)
, लेकिन इसके विपरीत नहीं: उदाहरण केN)
लिए वैध है।
प्लस ( +
) और माइनस ( -
) क्रमशः नोटों की अवधि को बढ़ाते हैं और घटाते हैं या नोटों के बीच समय अंतराल, उनके संदर्भ के आधार पर:
- जब अंदर गैर नकल कोष्ठक, वे तुरंत बढ़ाने या मिलीसेकंड (देखें के कुछ पूर्व निर्धारित संख्या से टिप्पणी अवधि चर कमी JSFiddle )। तो सामान्य से अधिक लंबी अवधि में
(++)N
खेलेंगेN
। - जब गैर-प्रतिकृति वाले कोष्ठकों के बाहर , वे अगले नोट की शुरुआत और उसके बाद के नोट के बीच के अंतराल को बढ़ाते या घटाते हैं (और प्रत्येक बाद के अंतराल) मिलीसेकंड के कुछ पूर्व निर्धारित संख्या से। तो में
++NP
बीच का अंतरालN
औरP
सामान्य से अधिक समय है।
नोटों की अवधि और उनके बीच का समय अंतराल 0 से नीचे नहीं जा सकता है।
चुनौती
मैंने जानबूझकर () 01+-
7 विशेष चरित्रों को चुना क्योंकि उन्हें सहज रूप से बहुत सारी प्रोग्रामिंग भाषाओं में कई संदर्भों में रखा जा सकता है।
आपका कार्य 512 बाइट्स या उससे कम में एक क्वीन लिखना है जो सबसे अच्छा लगने वाली धुन पैदा करता है जब कोड खुद को JSFiddle में इनपुट स्ट्रिंग के रूप में उपयोग किया जाता है ।
आप 4 अंतराल / अवधि मापदंडों के लिए कोई भी प्रारंभिक मान (गैर-नकारात्मक पूर्णांक) चुन सकते हैं, लेकिन आपकी धुन 10 मिनट से अधिक नहीं होनी चाहिए। आपको यह भी बताना चाहिए कि क्या आपकी धुन किसी विशेष उपकरण में सबसे अच्छी लगती है।
नियम
- आपके कोड में केवल टैब, न्यूलाइन और प्रिंट करने योग्य-एएससीआईआई की अनुमति है। सभी गैर-मुद्रण योग्य ASCII को धुन निर्माता द्वारा अनदेखा किया जाता है।
- आउटपुट किसी फ़ाइल या stdout या निकटतम विकल्प (जैसे JS अलर्ट) पर जा सकता है। कोई इनपुट नहीं है।
- सोर्स कोड की कोई रीडिंग नहीं। यह एक सच्ची रानी होनी चाहिए।
- किसी भी 3 सन्निहित स्रोत वर्णों को हटाने से प्रोग्राम को क्वीन के रूप में कार्य नहीं करना चाहिए। यह यह सुनिश्चित करने के लिए है कि लोग एक स्ट्रिंग में एक अच्छा गीत नहीं लिखते हैं, फिर इसका उत्पादन करने के लिए एक छोटा सा भाग है।
- इसलिए यदि आपके कार्यक्रम था
MYCODE
तोMYC
,MYE
,MDE
, औरODE
सब नहीं quines होना चाहिए (वे त्रुटि वरना उत्पादन कुछ कर सकते हैं)।
- इसलिए यदि आपके कार्यक्रम था
यह एक लोकप्रियता-प्रतियोगिता है, सबसे अधिक मतदान उत्तर जीतता है।
अद्यतन: अंतिम नियम में ढील।