एक ASCII पियानो पर संगीतमय Quines


22

एक मानक पियानो पर 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 का कोई प्रभाव नहीं है।)

मिलान किए गए कोष्ठक ( ()) दो उद्देश्य हैं:

  1. यदि उनकी सामग्री 's' और 's ' के अनुक्रम के साथ समाप्त नहीं होती है , तो सभी नोट्स एक ही समय पर एक राग के रूप में खेले जाते हैं (जो अन्यथा नोट से अलग नहीं है)। तो ऑक्टेव पर एक सी मामूली राग है 4. यदि नकली नोट मौजूद हैं तो उनकी ध्वनि भी दोहराई गई है। तो और ध्वनि अलग है।01(NQU)
    (NN)(NNN)
  2. अपनी सामग्री तो करता है की एक श्रृंखला के साथ अंत 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 होना चाहिए (वे त्रुटि वरना उत्पादन कुछ कर सकते हैं)।

यह एक लोकप्रियता-प्रतियोगिता है, सबसे अधिक मतदान उत्तर जीतता है।

अद्यतन: अंतिम नियम में ढील।


3
आप मैरी हैड लैम्ब को फोन कीपैड पर भी खेल सकते हैं: 3212333 222 399 (इसे आज़माएं, यह पूरी तरह से बाहर आता है।)
लेवल रिवर सेंट।

पियानो के लिए बहुत सारे मुफ्त साउंडफोन्स हैं। इसके अलावा, अच्छा JSFiddle!
क्यूपर

मैंने पहले कभी किसी नियम को अंतिम चुनौती के रूप में नहीं देखा है, जैसा कि मैंने सोचा था कि काफी प्रभावी है।
1

@qwr क्या आप सभी 88 कुंजी के किसी भी सेट के बारे में जानते हैं जो इस फैशन में सीधे जुड़ा हो सकता है ? मैंने थोड़ा देखा लेकिन कोई भी नहीं मिला।
केल्विन के शौक

जवाबों:


6

सी

मैंने तय किया कि मुझे स्ट्रिंग द्वारा उत्पन्न कम रंबिंग शोर पसंद आया, /**/जो संयोगवश नहीं है। सी में एक टिप्पणी को खोलने और बंद करने का तरीका। यहां केवल एक और दिलचस्प बिट यह है कि 34एक के "लिए बदल दिया जाता है 35-1(अंत में 1 जानबूझकर समाप्त होता है ) भगवान-भयानक chords से बचें। मैंने एंडिंग साउंड को नाटकीय बनाने की भी कोशिश की। मैंने वास्तव में किया था। मैं इसे बाद में संपादित करना चाहता हूँ ताकि यह थोड़ा बेहतर हो सके।

/**/char*p= "/**/char*p= %c%s%c; int main(){printf(p,34,p,35-1);p++;/**/}/**/";
int main(){printf(p,34,p,35-1);p++;/**/}/**/

नियमों की मेरी समझ के लिए, टिप्पणी किए गए अनुभाग अभी भी अंतिम नियम को पारित करते हैं, क्योंकि उनके निष्कासन के परिणामस्वरूप एक असफल क्वीन होता है।


3
"मैं इसे बाद में संपादित करना चाहता हूं ताकि यह थोड़ा बेहतर हो सके।" लगभग एक साल हो गया है। मुझे लगता है कि आप इसे बाद में संपादित नहीं करेंगे, ताकि यह बेहतर लगे। : पी
एलेक्स ए।

@AlexA। अब एक साल से अधिक!
wizzwizz4 15

5

जम्मू

हाँ, मुझे लगता है कि आप अनुमान लगा सकते हैं कि यह कैसे चल रहा है।

यह जेन्स के बिना कुछ भी शांत करने के लिए कठिन है, और चूंकि आप शायद ही उन्हें 0s और 1s के साथ समाप्त कर सकते हैं, ज्यादातर चीजें ध्वनि की तरह होती हैं, जैसे कि एक ही समय में कीबोर्ड के उच्च और निचले हिस्सों में बैठे लोग। मैंने पूरी कोशिश की, मुझे पता होगा।

यहाँ पियानो के लिए एक फंकी बेसलाइन है, मुझे लगता है। मैं वास्तव में रचना के बारे में पहली बात नहीं जानता, मैंने सिर्फ एक क्वीन को पकड़ा और संख्याओं को थोड़ा घुमाया।

(23 23,~,~i.124+-100){,'(23 23,~,~i.124+-100){,'''

और, सिर्फ मनोरंजन के लिए, इसे ईडीएम के रूप में खेलें। मैं इसे जेफेक्स ट्विन कहता हूं

".s=:'''".s=:'',''''''''&,@(,&'''''''')@(#~>:@(=&''''''''))s'

आपको कम से कोड के इन ठीक स्निपेट के quineiness पुष्टि कर सकते हैं tryj.tk


1
यह वास्तव में संगीत के लिए पारित कर सकता है। महान! :)
एमिल

4

पायथन के साथ मस्क कंक्रीट

आज मेरे पास बहुत समय नहीं है, लेकिन मैं एक उत्तर प्राप्त करना चाहता था। शैली कुछ भी नहीं लगने के लिए एक बहाना है। शायद एक वीडियो गेम में एक ध्वनि प्रभाव?

BFIN10=r"print('BFIN10=r\"'+BFIN10+'\"'+'\nexec(BFIN10)')"
exec(BFIN10)

वास्तव में बहुत बुरा नहीं है!
क्लाउडीयू

हर योको ओनो एल्बम कभी
विलियम बारबोसा

4

सी

int(printf)(char*,...); (main)(){char*b=",*",i=(34),*m=("int(printf)(char*,...); (main)(){char*b="),
*z="%s%c%s%c,i=(34),*m=(%c%s%c)%sz=%c%s%c,*B=%c%s%c,*f=(%c%s%c)%s(/*)*/%s/*(*/);}//(+++fim)",*B="(f,
i,m,z),(i,z,m),(m,i),(f,b),(m,i),(m,i),(f,z,m),(m,i),(f,z,b),(m,i),(b,z),(B,i),(38,i),(29,B),(26,i),
(26,i),(B,f),(42,i),(i,m,f),B",*f=(";(printf)");(printf)(/*)*/(f,i,m,z),(i,z,m),(m,i),(f,b),(m,i),(m
,i),(f,z,m),(m,i),(f,z,b),(m,i),(b,z),(B,i),(38,i),(29,B),(26,i),(26,i),(B,f),(42,i),(i,m,f),B/*(*/)
;}//(+++fim)

केवल प्रस्तुति प्रयोजनों के लिए लाइन ब्रेक के साथ टूट गया; यदि नयापन हटा दिया जाता है, तो यह केवल एक क्वीन है (और केवल लंबाई की आवश्यकताओं को पूरा करता है)।

संकलन करने के लिए प्रिंटफ घोषणा की आवश्यकता थी (printf)/*(*/और /*)*/कोड में कोष्ठक से मिलान करने के लिए उपयोग किया जाता था, जबकि कोष्ठक और कॉमा ऑपरेटर के मिश्रण को printfमापदंडों से जीवा बनाने के लिए उपयोग किया जाता था ।

संपादित करें: आकार की आवश्यकताओं को पूरा करने के लिए छोटा और साथ ही साथ टुकड़ा थोड़ा तेज हो।

यह पियानो पर सबसे अच्छा लगता है।


2
मुझें यह पसंद है! यह धीमी गति से शुरू होता है, लेकिन टोकन 130 से आगे की सब कुछ शक्तिशाली रूप से सता रहा है। आपने अपने लाभ के लिए कर्कशता का उपयोग किया।
केल्विन के शौक 1

यह एक ऑर्केस्ट्रा के लिए कल्पना के लिए पारित कर सकता है! : पी
सोहम चौधरी

2
मुझे पुराना संस्करण बेहतर लगा लेकिन यह अभी भी मेरा पसंदीदा गीत है। मैं तुम्हें इनाम देने की कोशिश कर रहा हूं, लेकिन किसी कारण से यह काम नहीं कर रहा है। मेटा देखें: meta.codegolf.stackexchange.com/questions/2263/…
केल्विन के शौक

3

योजना

यह विशेष रूप से मधुर नहीं हो सकता है (वास्तव में ऐसा लगता है कि किसी ने एक मृत सुअर को एक बच्चे-ग्रैंड में गिरा दिया), लेकिन कम से कम यह संगीत का एक छोटा टुकड़ा है। स्कीम में ज्यादा लंबी या कम डेड-फ्लाइंग-पिग जैसी चीजें बनाना मुश्किल होगा।

((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))

1
Ow, मेरे कान ....
Claudiu

2

फर गोल्फस्क्रिप्ट

":H;GHGHCFDA;[34]H+2*{-};":H;GHGHCFDA;[34]H+2*{-};

यह तीन-लगातार-अक्षर-हटाने वाले नियम के पत्र को संतुष्ट करता है, हालांकि इरादे नहीं, मैं इकट्ठा करता हूं।


1

कोबरा / बैच

@number float# 2>nul||@echo off
/# 2>nul
for /f "delims=" %%a in (%0) do echo %%a
#/# 2>nul
class P# 2>nul
    def main# 2>nul
        r="# 2>nul"# 2>nul
        s="@number float{3}||@echo off{2}/{3}{2}for /f {1}delims={1} %%a in (%0) do echo %%a{2}#/{3}{2}class P{3}{2}    def main{3}{2}      r={1}{3}{1}{3}{2}       s={1}{0}{1}{3}{2}       Console.write(s,s,34to char,10to char){3}"# 2>nul
        Console.write(s,s,34to char,10to char,r)# 2>nul

तकनीकी रूप से बैच में एक क्वीन नहीं है (यह पढ़ता है कि यह स्वयं का स्रोत है)। यह कोबरा में एक क्वीन है।

यह पियानो मोड के साथ सबसे अच्छा लगता है, कुछ हद तक एक सुपर मारियो विश्व-युग वीडियो गेम से भूत-स्तरीय संगीत जैसा है।


1

Pyth

J"+K+N+J+N+\K+N+K+NJ"K"J"+K+N+J+N+\K+N+K+NJ

चौथा सेटिंग (राशि + और - परिवर्तन अंतराल) के साथ सर्वश्रेष्ठ लगभग 20 पर खेला जाता है, डिफॉल्ट पर आराम करता है। पियानो पर सबसे अच्छा लगता है।


0

हास्केल

(मुझे यकीन नहीं है कि चर नाम अंतिम नियम का उल्लंघन करता है।)

main=putStr$  jjlmjiebab ++ {--} show jjlmjiebab;jjlmjiebab = "main=putStr$  jjlmjiebab ++ {--} show jjlmjiebab;jjlmjiebab = "

मानक + और - मानों के साथ 1000 मिलीसेकंड नोट अवधि और 250 मिलीसेकंड नोट अंतराल के साथ पियानो पर सबसे अच्छा खेला जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.