एक क्वीन सुइट लिखें


30

हमारे पास बहुत सारी चुनौतियां हैं, लेकिन बहुत सारे क्वीन फॉर्मेट समान हैं, जो हमारे क्वीन में कुछ बदलाव पैदा करते हैं।

आपका कार्य एक ही भाषा (कम से कम 2) में कार्यक्रमों का चयन करना है, जो सभी अपने स्वयं के स्रोत कोड का उत्पादन करते हैं, हालांकि, इनमें से कोई भी कार्यक्रम किसी भी वर्ण को साझा नहीं कर सकता है।

उदाहरण के लिए, यदि आप एक प्रोग्राम बनाते हैं:

printf+qw(printf+qw(%s)x2)x2

आपके अगले कार्यक्रम में कोई भी शामिल नहीं हो सकता है:

%()+2finpqrstwx

और इसी तरह।

नियम

  • आप यूनिकोड वर्णों का उपयोग कर सकते हैं, लेकिन आपको अभी भी बाइट्स में स्कोर करना होगा।
  • सभी कार्यक्रमों को एक उचित रानी की सामुदायिक परिभाषा को पूरा करना चाहिए । इसका मतलब यह है कि खाली स्ट्रिंग को अन्य चीजों के बीच एक मान्य क्वीन के रूप में नहीं गिना जाता है।
  • मानक खामियों को मना किया जाता है।
  • जब तक वे उपरोक्त परिभाषा को पूरा करते हैं तब तक कार्य या पूर्ण कार्यक्रमों की अनुमति दी जाती है।
  • प्रतीकात्मक स्वतंत्र भाषाएं (जिसमें पेंग्वेज़ और हेडसेक शामिल हैं) अस्वीकृत हैं।
  • अधिकांश कार्यक्रम जीतते हैं, टाई ब्रेकर के रूप में सबसे कम कुल कोड के साथ।

चूँकि करीबी वोट हैं मैं चर्चा के लिए सैंडबॉक्स पोस्ट को हटा दूँगा
डोम हेस्टिंग्स

मुझे लगता है कि सैंडबॉक्स टिप्पणियों का उल्लेख है कि फ़ंक्शन सबमिशन की अनुमति है, लेकिन चुनौती इसके बारे में कुछ भी नहीं कहती है - मैं इसे विपरीत के लिए डिफ़ॉल्ट मान रहा था।
अर्जन जोहान्सन

2
संबंधित (बातचीत चुनौती की तरह - अपने quines खुद को के बजाय एक दूसरे के उत्पादन के लिए है)
नथानिएल

1
नई अनुगामी के बारे में क्या? अगर मेरी एक रानी एक को प्रिंट करती है, तो क्या दूसरे को ऐसा करने से बचना चाहिए? (मुझे संदेह है कि अधिकांश उत्तर ऐसा नहीं करते हैं।)
नाथनियल

2
@DomHastings मुझे एक मेटा सवाल नहीं मिला, इसलिए मैंने एक पूछा
नथानिएल

जवाबों:


27

वी , 3 , 5 क्वाइन, 46 बाइट्स

2A2A

इसे ऑनलाइन आज़माएं!

Hexdump:

00000000: 3241 3241                                2A2A

स्पष्टीकरण:

2     " 2 times...
 A    " (A)ppend the following text...
  2A  "   '2A'

5­­­a5­­­a

इसे ऑनलाइन आज़माएं!

Hexdump:

00000000: 35ad adad 6135 adad ad61                 5...a5...a

स्पष्टीकरण:

5---        " 5 - 3 times...
    a       " (a)ppend the following text...
     5---a  "   '5---a'

1«I1«I

इसे ऑनलाइन आज़माएं!

Hexdump:

00000000: 31ab 4931 ab49                           1.I1.I

स्पष्टीकरण:

1«      " 1 + 1 times...
  I     " (I)nsert the following text...
   1«I  "   '1«I'

यहाँ है जहाँ वे कायरता प्राप्त करने के लिए शुरू ...

ñi34x@-qPÉÑ~ÿ

इसे ऑनलाइन आज़माएं!

Hexdump:

00000000: f169 1633 341b 7840 2d71 50c9 d17e ff    .i.34.x@-qP..~.

स्पष्टीकरण:

ñ                       " Wrap all the following in macro '"q':
 i<C-v>34               "   Insert character code 34 `"`
         <esc>          "   Return to normal mode
              x         "   Delete the character we just inserted. Now, running `@-` will be equal to running `"`
                  P     "   Paste...
               @-       "   From Register...
                 q      "   "q
                   ÉÑ   "   Insert 'Ñ' at the beginning of this line
                     ~  "   Toggle the case of the character we just inserted
                      ÿ "   Black magic

:norm é:":p

इसे ऑनलाइन आज़माएं!

Hexdump:

00000000: 3a6e 6f72 6d20 e93a 223a 70              :norm .:":p

स्पष्टीकरण:

:norm       " Run the following commands as if typed:
      é:    "   insert ':'. Somehow also does black magic and resets the value of '":`
        ":p "   Paste the last ex command to be run ('norm é:":p')

यह उत्तर काले जादू से भरा है। Quines 1 और 4 नए नहीं हैं, लेकिन अन्य 3 सभी पहले कभी नहीं पाए गए हैं, इसलिए इनमें से आधे से अधिक quines आज ही खोजे गए थे।


8
तीसरा कार्यक्रम ट्रोलिंग है। "आप एक कर रहे हैं normie :p"
mbomb007

4
@ mbomb007 ObligatoryREEEEEE--
मैजिक ऑक्टोपस Urn

17

जैली , २ ३ ४ ५ क्वाइन, १४ १ 59 81 ६५ ५६ ३२६ २६५ २४ 22 ९ २ ९ २१ बाइट्स

3 बाइट्स

”ṘṘ

इसे ऑनलाइन आज़माएं!

मानक क्वीन। ”Ṙके लिए एक अक्षर शाब्दिक है इस के स्ट्रिंग प्रतिनिधित्व को प्रिंट करता है तब स्ट्रिंग को स्पष्ट रूप से प्रिंट किया जाता है।

4 निवाले

⁾⁾ḤḤ

इसे ऑनलाइन आज़माएं!

शुरू होता है एक दो चरित्र स्ट्रिंग शाब्दिक और यह तर्क है कि डबल्स। एक स्ट्रिंग इनपुट के साथ, प्रत्येक वर्ण पर मैप किया जाता है। इस प्रकार स्ट्रिंग ⁾Ḥपैदावार पर अभिनय ⁾⁾ḤḤ, स्रोत कोड।

11 बाइट्स

ȮṾṖƊ}“ȮṾṖƊ}

इसे ऑनलाइन आज़माएं!

दाहिने हाथ की ओर, “ȮṾṖƊ}के लिए स्ट्रिंग शाब्दिक है ȮṾṖƊ}। स्ट्रिंग समापन चरित्र tacitly EOF में जोड़ा गया है।

स्ट्रिंग शाब्दिक के बाईं ओर, एक एकल मोनाड में Ɗलपेटता है ȮṾṖऔर }इसे एक डाईड में बदल देता है जो इसे सही तर्क का उपयोग करता है, स्ट्रिंग स्ट्रिंग। Ȯस्ट्रिंग को प्रिंट करता है ( ȮṾṖƊ}), स्ट्रिंग का एक स्ट्रिंग प्रतिनिधित्व बनाता है ( “ȮṾṖƊ}”) और चरित्र को हटा देता है “ȮṾṖƊ}संन्यासी के बाद स्ट्रिंग छोड़ दिया जाता है और स्पष्ट रूप से मुद्रित किया जाता है।

38 49 36 बाइट्स

32,52,52,7884,106,64,44,7884 44Ọj@,Ọ

इसे ऑनलाइन आज़माएं!

पहली बार मैंने कभी जेली गोल्फ में एक जगह का उपयोग किया है।

शुरुआत में संख्याओं की सूची ordकोड के बाकी पात्रों को रखती है । उसके बाद:

jṛ44Ọ$,Ọ
j           Join this list with...
 ṛ          right argument. Avoiding using ¤ so I can use it in the next program.
  44Ọ       chr(44)==',': [106, ',', ...]
     $      Causes Ọ to act on 44 before j acts on it.
      ,     Pair this list with...
       Ọ    chr of each number in the list. Yields jṛ44Ọ$,Ọ

270 198 180 162 बाइट्स

⁽¢_;⁽⁽¤;⁽¡_;⁽⁽¡;⁽¡¤;⁽$+;⁽⁽y;⁽Ẹ$;⁽⁺$;⁽AƑ;⁽?€;⁽b⁽;⁽¢¡;⁽_⁽;⁽¡¡;⁽¤ị;⁽ØJ;⁽µṭ;⁽€⁽;⁽¡S;⁽;⁽;⁽¡ʠ;⁽¤ị;⁽ØJ;⁽¤F;⁽ḊṄ;⁽ȧF
¢_⁽¤¡_⁽¡¡¤$+⁽yẸ$⁺$AƑ?€b⁽¢¡_⁽¡¡¤ịØJµṭ€⁽¡S;⁽¡ʠ¤ịØJ¤FḊṄȧF

इसे ऑनलाइन आज़माएं!

जेली कोड पेज में आधार 250 नंबर और इंडेक्स का उपयोग करता है। एल्गोरिथ्म को बदलकर 72 बाइट्स बचाता है। जेली के कोड पृष्ठ पर अनुक्रमित करने के लिए प्रत्येक संख्या का उपयोग कर रहा था, लेकिन अब पूर्णांक को आधार 250 में परिवर्तित कर रहा हूं, फिर जेली के कोड पृष्ठ में अनुक्रमण कर रहा हूं, मूल रूप से मुझे पहली पंक्ति में आवश्यक शाब्दिक संख्या को आधा करना है। यह भी आवश्यक अद्वितीय वर्णों की संख्या को कम करता है, लेकिन मैं किसी भी अधिक quines बनाने के तरीके के बारे में नहीं सोच सकता।

मैंने उपयोग किया है ⁾“”जो स्ट्रिंग लिटरल बनाते हैं और ØJजो संख्याओं से स्ट्रिंग्स बनाते हैं। मैं तार बनाने के किसी अन्य तरीके के बारे में नहीं सोच सकता। मेरे पास अभी भी अंक 9और ‘’उपलब्ध हैं, इसलिए यदि संख्याओं से तार बनाने का एक और तरीका है, तो एक और क्वीन बनाना संभव हो सकता है।


13

हास्केल , 3 quines, 1119 बाइट्स

क्वीन 1, 51 बाइट्स

एक गुमनाम IOकार्रवाई सीधे स्टडआउट करने के लिए मुद्रण।

putStr`mappend`print`id`"putStr`mappend`print`id`"

इसे ऑनलाइन आज़माएं!

क्वीन 2, 265 बाइट्स

फ़ंक्शन fएक डमी तर्क लेता है और एक स्ट्रिंग लौटाता है।

f	c=[b=<<g]!!0++show	g;b	c=[[[show	9!!0,show	1!!0..]!!6..]!!c];g=[93,0,90,52,82,89,52,51,51,94,84,24,24,39,34,34,106,95,102,110,0,94,50,89,0,90,52,82,82,82,106,95,102,110,0,48,24,24,39,35,106,95,102,110,0,40,24,24,39,37,37,84,24,24,45,37,37,84,24,24,90,84,50,94,52]

इसे ऑनलाइन आज़माएं!

काफी 3, 803 बाइट्स

LANGUAGEप्रागमा के बाद सब कुछ एक डमी तर्क लेने और एक स्ट्रिंग वापस करने के लिए एक अनैतिक कार्य है।

{-#LANGUAGE CPP#-}(\q(_:_:_:_:_:_:_:_:z)y(#)_->(y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:x)$y(:)#y(:)$ \x->x)z)'\''__TIME__(\(?)v k x->v$k?x)$ \(&)(%)v->v&'{'&'-'&'#'&'L'&'A'&'N'&'G'&'U'&'A'&'G'&'E'&' '&'C'&'P'&'P'&'#'&'-'&'}'&'('%'\\'&'q'&'('&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'z'&')'&'y'&'('&'#'&')'&'_'&'-'&'>'&'('&'y'&'('%'\\'&'k'&' '&'x'&'-'&'>'%'\''&'&'%'\''&':'&'q'&':'&'k'&':'&'q'&':'&'x'&')'&'#'&'y'&'('%'\\'&'k'&' '&'x'&'-'&'>'%'\''&'%'%'\''&':'&'q'&':'%'\''%'\\'%'\\'%'\''&':'&'k'&':'&'q'&':'&'x'&')'&'$'&'y'&'('&':'&')'&'#'&'y'&'('&':'&')'&'$'&' '%'\\'&'x'&'-'&'>'&'x'&')'&'z'&')'%'\''%'\\'%'\''%'\''&'_'&'_'&'T'&'I'&'M'&'E'&'_'&'_'&'('%'\\'&'('&'?'&')'&'v'&' '&'k'&' '&'x'&'-'&'>'&'v'&'$'&'k'&'?'&'x'&')'&'$'&' '%'\\'&'('&'&'&')'&'('&'%'&')'&'v'&'-'&'>'&'v'

इसे ऑनलाइन आज़माएं!

वर्ण

क्विन 1:


"S`adeimnprtu

2:

	!+,.0123456789;<=[]bcfghosw

3:

 #$%&'()-:>?ACEGILMNPTU\_kqvxyz{}

यह काम किस प्रकार करता है

काफी 1

putStr`mappend`print`id`"putStr`mappend`print`id`"

Quine 1 मेरे हालिया गोल्फ का एक संशोधित संस्करण है जिसमें आप एक क्वीन उत्तर (H.PWiz द्वारा सुधार के साथ):

  • चूंकि पूर्ण कार्यक्रमों की आवश्यकता नहीं है, इसलिए main=हटा दिया गया है।
  • <>और $उनके पास समानार्थी शब्दों ने ले ली है mappendऔर id

यह अन्य वर्णों के लिए महत्वपूर्ण पात्रों =<>और सहायक ऑपरेटर $को मुक्त करता है।

काफी 2

f	c=[b=<<g]!!0++show	g;b	c=[[[show	9!!0,show	1!!0..]!!6..]!!c];g=[93,0,......]

Quine 2 मेरे हाल ही के पारस्परिक विशेष रूप से Quines उत्तर के 2 को प्रोग्राम करने के लिए कुछ इसी तरह के तरीकों का उपयोग करता है , लेकिन खुद को सीधे और विशेष रूप से चरित्र शाब्दिक का उपयोग करने से बचने के लिए अनुकूलित किया जाता है, जो कि quine के लिए आवश्यक हैं। 3. इन दोनों को showफ़ंक्शन की मदद से हासिल किया जाता है , जो कि सरासर किस्मत से अभी तक इसके किसी भी पात्र का इस्तेमाल नहीं किया है।

यह क्वीन रिक्त स्थान के बजाय टैब का उपयोग करता है, लेकिन मैंने पठनीयता के लिए नीचे रिक्त स्थान का उपयोग किया है।

  • gकोड के अंत में पूर्णांकों की सूची के रूप में, quine data है। प्रत्येक संख्या बाकी कोड से एक चरित्र का प्रतिनिधित्व करती है।
    • संख्या द्वारा स्थानांतरित कर दिया जाता है 9, ताकि टैब है 0। यह फ़ंक्शन और चर नामों के लिए निचले अक्षरों को 2 अंकों में फिट करने की अनुमति देकर एन्कोडिंग को थोड़ा छोटा करता है।
  • b c=[[[show 9!!0,show 1!!0..]!!6..]!!c] एक संख्या को एक चरित्र में बदलने के लिए एक फ़ंक्शन है (वास्तव में एक एक चरित्र स्ट्रिंग)।
    • [[show 9!!0,show 1!!0..]!!6..]एक कैरेक्टर रेंज एक टैब कैरेक्टर से शुरू होती है, जिसे इसमें अनुक्रमित किया जाता है !!c
    • टैब वर्ण स्वयं एक अन्य श्रेणी में अनुक्रमणिका द्वारा निर्मित होता है [show 9!!0,show 1!!0..], अंक वर्णों से शुरू होता है '9'और '1'8 के चरणों में नीचे कूदता है।
    • अंक वर्णों को showसंबंधित अंक के स्ट्रिंग में अनुक्रमित करके उत्पादित किया जाता है ।
  • f c=[b=<<g]!!0++show gमुख्य कार्य है। cएक डमी तर्क है।
    • b=<<g=<<प्रत्येक gवर्ण को उसके वर्ण में बदलने के लिए उपयोग करता है । ( =<<उदाहरण के बजाय उदाहरण के लिए एक सूची में इसके लौटे चरित्र को लपेटने की आवश्यकता mapक्यों है b।)
    • show gस्ट्रिंग की gसूची का प्रतिनिधित्व करता है , और ++तार को व्यक्त करता है।
    • क्योंकि =<<पहले से कम है ++, कुछ ब्रैकेटिंग की जरूरत है। ()(क्वीन 3 के लिए आरक्षित) का उपयोग करने से बचने के लिए, [...]!!0एक तत्व के साथ एक सूची में अनुक्रमित करता है।

काफी 3

अन्य quines के डिजाइन से, quine 3 में अभी भी कोष्ठक, लंबोदर भाव, वर्ण शाब्दिक और स्ट्रिंग / सूची निर्माणकर्ता तक पहुंच है :। यह एक समारोह है कि निर्माण करने के लिए पर्याप्त होगी पहले जोड़ता एक स्ट्रिंग के लिए Quine के कोड।

दुर्भाग्य से, सभी निचले मामले स्वर (कभी-कभी को छोड़कर y) का उपयोग किया गया है, जिससे कोई उपयोगी अल्फ़ान्यूमेरिक बिलिन फ़ंक्शन नहीं रह गया है। भी []""गए हैं। कोड का बहाना शुरू करने के लिए एक खाली स्ट्रिंग का निर्माण करने का यह कोई सामान्य तरीका नहीं है।

हालाँकि, लगभग सभी बड़े अक्षर अभी भी उपलब्ध हैं, इसलिए LANGUAGEभाषा विस्तार पाने के लिए एक प्रचार संभव है। फिर से सरासर भाग्य, CPP(सक्षम सी पूर्वप्रक्रमक) केवल अपरकेस अक्षरों के साथ नाम का एकमात्र भाषा एक्सटेंशन है। और CPP मैक्रो में अक्सर बड़े नाम होते हैं।

तो आवश्यक खाली स्ट्रिंग प्राप्त करने के लिए, क्वीन सक्षम CPPकरता __TIME__है, फार्म का एक स्ट्रिंग स्थिरांक प्राप्त करने के लिए मैक्रो का उपयोग करता है "??:??:??"(आसानी से हमेशा एक ही लंबाई की गारंटी है), और उस पर पैटर्न मैच।

{-#LANGUAGE CPP#-}(\q(_:_:_:_:_:_:_:_:z)y(#)_->(y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:x)$y(:)#y(:)$ \x->x)z)'\''__TIME__(\(?)v k x->v$k?x)$ \(&)(%)v->v&'{'&'-'&......

भाषा के प्रचार के बाद, क्वीन में एक लैम्बडा अभिव्यक्ति होती है, जो इन मापदंडों को इन चार तर्कों के लिए बाध्य करती है ( _बाद में लागू होने के लिए अंतिम डमी पैरामीटर छोड़कर ):

  • qकरने के लिए बाध्य '\'', एक एकल उद्धरण चरित्र दे;
  • _:_:_:_:_:_:_:_:zबाध्य __TIME__, उर्फ ​​एक स्ट्रिंग की तरह "??:??:??", इस प्रकार zएक खाली स्ट्रिंग बनाना;
  • yसे जुड़ा हुआ है (\(?)v k x->v$k?x), एक लैम्ब्डा कॉम्बीनेटर का उपयोग बाईं संबद्ध ("फोल्डल") से दाईं संबद्ध ("फोल्डर") फॉर्म में आने के लिए क्वाइन डेटा को परिवर्तित करने में मदद करने के लिए किया जाता है;
  • ऑपरेटर , क्वीन डेटा को ही (#)बाध्य \(&)(%)v->v&'{'&'-'&...करता है।

क्वीन डेटा को चर्च एन्कोडिंग के रूप में दिया जाता है, मापदंडों के साथ एक लैम्ब्डा अभिव्यक्ति (&)(%)v

  • एक्सप्रेशन को तुरंत करने के लिए विशेष मानों की अभिव्यक्ति को लागू करके (&), (%)और vइस एन्कोडिंग का उपयोग या तो क्वीन के मुख्य कोड का निर्माण करने के लिए किया जा सकता है या फिर क्वीन डेटा प्रतिनिधित्व को स्वयं बनाने के लिए।
  • हास्केल के डिफ़ॉल्ट निर्धारण नियम के अनुसार, &और मेमने के %अंदर बाएं सहयोगी संचालक बनें। इस प्रकार वर्ण पैरामीटर vबाईं ओर से आरंभिक जोड़ के साथ संयुक्त हो जाते हैं ।
  • अधिकांश पात्रों के लिए k, एक अनुरूप है &'k'
  • जब kहै 'या \, जो चरित्र शाब्दिक के अंदर से बचने की जरूरत है, तो इसके बजाय एन्कोडिंग है %'\k'

चूंकि डेटा एन्कोडिंग को साहचर्य छोड़ दिया जाता है, लेकिन तार एक सही साहचर्य तरीके से निर्मित होते हैं, इसलिए y = (\(?)v k x->v$k?x)कंबाइनेटर को बेमेल पुल को पेश किया जाता है।

  • y(...)कोन डेटा (&)और (%)ऑपरेटरों के रूप में उपयोग करने के लिए उपयुक्त कार्यों का निर्माण करने का इरादा है ।
  • vतार से तार तक एक फ़ंक्शन है (क्वीन डेटा के इच्छित vउदाहरण हैं)।
  • kएक चरित्र, xएक स्ट्रिंग और ?एक ऑपरेटर है जो उन्हें एक नए स्ट्रिंग में जोड़ता है। (कोर कोड के (?)=(:)लिए। वास्तव में क्वीन डेटा प्रतिनिधित्व के पुनर्निर्माण के लिए, यह अधिक जटिल है।)
  • इस प्रकार y(?)v k = \x->v$k?xतार से तार तक एक और कार्य है।
  • यह कैसे परिवर्तनशीलता का एक उदाहरण के रूप में, यदि (&)=y(:):

    (v&k1&k2&k3) x
    = (((v&k1)&k2)&k3) x
    = y(:)(y(:)(y(:)v k1)k2)k3 x
    = y(:)(y(:)v k1)k2 (k3:x)
    = y(:)v k1 (k2:(k3:x))
    = v (k1:(k2:(k3:x)))
    = v (k1:k2:k3:x)

आमतौर पर, जब (#)क्वीन डेटा फ़ंक्शन होता है और f1,f2स्ट्रिंग के साथ वर्णों के संयोजन के कार्य होते हैं:

(y(f1)#y(f2)$v) x
= (...(y(f1)(y(f1)v '{') '-')...) x
= v(f1 '{' (f1 '-' (... x)))

साथ (&)=y(f1)और (%)=y(f2), और यह निर्धारित डेटा का उपयोग करता है f1और f2साथ में डेटा के वर्णों को संयोजित करने के लिए x, और फिर परिणामी स्ट्रिंग को पास करता है v

मुख्य मेमने की अभिव्यक्ति का शरीर यह सब एक साथ रखता है:

(y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:x)$y(:)#y(:)$ \x->x)z
  • '&':q:k:q:xएक चरित्र के लिए kपहले जोड़ता है &'k'स्ट्रिंग के लिए xहै, जबकि '%':q:'\\':k:q:xपहले जोड़ता है %'\k', जो उनके मूल Quine डेटा रूप हैं।
  • इस प्रकार y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:x, क्वीन डेटा प्रतिनिधित्व के पुनर्निर्माण के लिए सही मानदंड हैं, जो अंतिम z(खाली स्ट्रिंग) से जुड़ा हुआ है , और फिर निम्नलिखित फ़ंक्शन पर पारित किया गया।
  • y(:)#y(:) अन्य संशोधन के बिना, एक स्ट्रिंग के लिए क्वीन के कोर कोड को प्रस्तुत करने के लिए सही पैरामीटर हैं।
  • अंत में \x->x, निर्माण की गई क्वाइन के साथ कुछ भी नहीं करने के लिए मिलता है, जिसे वापस कर दिया जाता है।

9

पर्ल 6 , 3 क्वाइन, 274 बाइट्स

क्वीन 1, 52 बाइट्स

my&d={S{\d}=$_};say
d
Q{my&d={S{\d}=$_};say
d
Q{4}}

इसे ऑनलाइन आज़माएं!

क्विन 2, 102 बाइट्स

printf	|(q[printf	|(q[@]xx	2	Z~|(q[printf	|(q[!3]]Xx	qw[1	0]))]xx	2	Z~|(q[printf	|(q[!3]]Xx	qw[1	0]))

इसे ऑनलाइन आज़माएं!

क्विन 3, 120 बाइट्स

<'.EVAL'.UC,' GIVEN ',「「PRINT "<'.EVAL'.UC,' GIVEN ',「「".UC,.UC,"」」>.LC",".EVAL.EVAL".UC」」>.lc.EVAL.EVAL

इसे ऑनलाइन आज़माएं!

बाइट्स के विभिन्न सेटों का सत्यापन

उस तीसरी रानी को पाने के लिए बहुत सारी तिकड़म करनी पड़ी। पर्ल 6 उत्पादन के 4 तरीकों है (है कि मैं के बारे में पता कर रहा हूँ), say, put, printऔर printf। दोनों sayऔर putआउटपुट न्यूलाइन्स, क्योंकि मैं दोनों का उपयोग नहीं कर सकता। put, print, printfसभी शामिल pहैं और t। हम EVALअपरकेस का उपयोग करके आंशिक रूप से इसे प्राप्त कर सकते हैं PRINT। वहाँ से, मुझे नहीं लगता कि 4 क्वीन मिलना संभव है ... (हालाँकि शायद कुछ ऐसा ही हैshell "echo 'quine'" काम कर सकता है)

फिर हम अलग-अलग ऑपरेटर, स्पेस, टैब और न्यूलाइन्स के लिए विभिन्न प्रकार के व्हाट्सएप का उपयोग करके मुद्दों को फैला सकते हैं।

स्पष्टीकरण:

क्विन 1:

my&d={        };         # Declare a function d which 
      S{\d}=$_           # Which substitutes a digit with the string again
                say      # Print with a newline
d                        # The function
Q{my&d={S{\d}=$_};say    # Applied to the string with the program
d
Q{4}}                    # With a digit where the it should be inserted again

2:

यह प्रारूप में एक क्वीन है printf |(q[printf q[%s]]xx 2), अर्थात यह स्ट्रिंग की एक प्रति को अपने आप में प्रारूपित करता है। हालाँकि हम इसका उपयोग नहीं कर सकते हैं sक्योंकि यह पिछले क्वीन में उपयोग किया जाता है say। तो हम स्ट्रिंग या ऑपरेटर ( ~|) पर @और भाग !3का उत्पादन करने के लिए उपयोग करते हैं %s, लेकिन हम प्रारूप स्ट्रिंग और स्ट्रिंग दोनों को सम्मिलित करने के लिए ऐसा नहीं कर सकते, इसलिए हमें Z~अतिरिक्त स्ट्रिंग और खाली स्ट्रिंग के साथ करना होगा। हालांकि हम तब ,दोनों को अलग करने के लिए उपयोग नहीं कर सकते हैं , इसलिए हम फिर Xx qw[1 0]1 और 0 से गुणा करने के लिए करते हैं ।

printf |(                                  )      # Print with formatting
         q[...]       # The string of the program
               xx 2   # Duplicated
                    Z~| (                 )     # String or'd with
                         q[...]                 # A copy to insert the %s
                                Xx              # String multiplied to
                                   qw[1 0]      # itself and an empty string

3:

यह एक EVAL quine है जो अन्य quines के साथ संघर्ष से बचने के लिए सब कुछ बड़ा करने की पूरी कोशिश करता है। इसमें बहुत सारे के EVALसाथ-साथ बहुत कुछ शामिल है lcऔर ucमामलों के बीच रूपांतरण करना है।

<...>.lc.EVAL        # Evaluate the lowercase version of the string which results in
.EVAL  given  「print "<'.eval'.uc,' given ',「「".uc,.uc,"」」>.lc",".eval.eval".uc」
             .EVAL   # Evaluate again 

.EVAL  given  「...」   # Set the string to $_ and pass it to .EVAL
print "<'.eval'.uc,' given ',「「".uc       # Print the first half of the quine uppercased
                                   ,.uc   # Print the string uppercased
                                       ,"」」>.lc"  # Print the .lc part lowercased
                                                ,".eval.eval".uc # Print the EVAL part uppercased

9

मैथॉल्फ , 4 5 6 क्वाइन, 193,535 बाइट्स

9 बाइट्स

ÿ'ÿ⌐_'ÿ⌐_

इसे ऑनलाइन आज़माएं!

45 बाइट्स

û]∙ûxôû¬ûûûûû╡¬ûô╡û╡xûxxû¬ô]∙xô¬ûûû╡¬ô╡╡xxx¬ô

इसे ऑनलाइन आज़माएं!

49 बाइट्स

ùa6æù\a\ù+6┼ù\ùùùùù\ù§\+ùΣ\Σa6æ\a\+6┼\ùùùù\§\+Σ\Σ

इसे ऑनलाइन आज़माएं!

99 बाइट्स

"""▐ ⌠▌ ⌠▌ ⌠▌ ⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠"`~

इसे ऑनलाइन आज़माएं!

4488 बाइट्स

♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((DÄß─·ö♠,♦M-$*DÄß─ö7($$$qq$Äq╘

इसे ऑनलाइन आज़माएं!

188,845 बाइट्स

मैं वास्तव में इस एक से लिंक नहीं कर सकता, इसलिए यहां एक पर्ल 6 प्रोग्राम है जो वास्तविक क्वीन उत्पन्न करता है

विशिष्टता का सत्यापन

मैं निश्चित रूप से इस से बाहर एक और कुनैन निचोड़ कर सकता हूं, हालांकि मुझे लगता है कि मैं स्ट्रिंग्स को सीधे स्टैक पर धकेलने के तरीकों से बाहर चला गया हूं, इसलिए मुझे अजनबी तरीकों का सहारा लेना होगा। यहां तक ​​कि आने वाली अजनबी विधियां भी जैसे ही मैं छठी क्वीन के लिए कोशिश करता हूं। कुछ मामलों में क्वाइन कम हो सकते हैं, लेकिन मैं तैयारी में प्रयुक्त बाइट्स को कम कर रहा हूं।

ठीक है, मैं तकनीकी रूप से एक और क्वीन करने में सक्षम हो सकता हूं, क्योंकि मेरे पास अभी भी कुछ ऑपरेटर हैं जिनकी मुझे ज़रूरत है (पुश स्ट्रिंग, इंक्रीमेंट स्ट्रिंग, दोहराव, मैपिंग, पॉपिंग), यह लूपिंग है जो हमें विवश करता है। {}केवल ऑपरेटरों कि मनमाने ढंग से लंबाई की एक कोड ब्लॉक संकेत कर सकते हैं कर सकते हैं, और मैं वास्तव में उन्हें 6 Quine में की जरूरत है। मैं कुछ अन्य कोड ब्लॉक का उपयोग कर सकता हूं, लेकिन वे सीमित हैं, और मुझे संदेह है कि लूपिंग सेक्शन इतने कम होने वाले हैं, क्योंकि हम आसान ऑपरेटरों से बाहर चल रहे हैं।

ठीक है, कुछ स्पष्ट स्पष्टीकरण:

सभी खानों में लगभग समान संरचना होती है:

  • एक स्ट्रिंग, या स्ट्रिंग्स की सूची, या स्टैक के पात्रों की सूची को पुश करें।
  • सभी को एक सूची में मिलाएं
  • सूची को डुप्लिकेट करें
  • मूल पात्रों को प्राप्त करने के लिए उपयोग किए गए वर्णों की प्रतिलिपि, मुद्रण / पुश पर नक्शा
  • एक स्ट्रिंग के रूप में वर्णों की मूल सूची प्रिंट करें

क्विन 1:

यह मूल रूप से वही है जो मैंने सामान्य क्वीन प्रश्न में पोस्ट किया था।

ÿ'ÿ⌐_'ÿ⌐_
ÿ            Push the next 4 bytes as a string
 'ÿ⌐_        Stack ["'ÿ⌐_"]
     'ÿ      Push the byte ÿ (I realise I could have used this in a later quine)
       ⌐     Rotate the ÿ to the bottom of the stack : ["ÿ", "'ÿ⌐_"]
        _    Duplicate top of stack: ["ÿ", "'ÿ⌐_", "'ÿ⌐_"]
             Implicitly print stack joined together : ÿ'ÿ⌐_'ÿ⌐_

काफी 2

û                Push the next 2 bytes as a string
 ]∙              Stack: ["]∙û"]
   û  û...      Repeat this for the rest of the code
           ]              Wrap the stack in an array : [["]∙","xô"...]]
            ∙             Triplicate                 : [[..],[..],[..]]
             x            Reverse the top array
              ô           Loop over the array, executing the next 6 instructions
                          Stack: [[..],[..],str]
               ¬          Rotate the stack : [str,[..],[..]]
                ûûû╡      Push the string "ûû" and discard the left character
                    ¬     Rotate the "û" to the bottom : ["û",str,[..],[..]]
                          This produces the initialisation part
                     ô    Loop over the array with the next 6 characters again
                      ╡╡xxx¬      Basically discard the string
                            ô     Flatten the last copy of the array onto the stack
                                  Implicitly output the code

3:

ùa6æù\a\ù+6┼ù\ùùùùù\ù§\+ùΣ\Σa6æ\a\+6┼\ùùùù\§\+Σ\Σ
ù...          Push the next 3 bytes as a string
              You know how this goes
    a         Wrap the top element in an array
     6æ       Repeat the next 4 instructions 6 times
       \      Swap the two top items
        a     Wrap the top item in an array
         \    Swap back
          +   Combine the two arrays
              This puts all the strings into a single array
           6            Push a 6
            ┼           Push the element two items down (the array)
             \          Swap with the 6 (this basically duplicates the array)
              ùùùù      Push "ùùù"
                  \§    Swap and get the 6th character (wrapping)
                    \   Swap with array : ["ù", [..]]
                     +  Prepend to array (implicitly mapping)
                      Σ\Σ     Join both the lists to strings and output

4:

"""▐ ⌠▌ ⌠▌ ⌠▌ ⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠"`~
""             Push the empty string
  "..."        Push some code : ['','...']
       `       Copy the top two elements of the stack : ['','...','','...']
        ~      Evaluate the top element as code : ['','...','']
▐              Prepend the empty string to the code
  ⌠            Push a space and increment by 2 to get a quote
   ▌           Prepend to the array
     ⌠▌ ⌠▌ ⌠   Repeat three more times, leaving the last on top : ['', '""...','"']
              ⌠⌠...       Push a space and increment until it reaches a '`'
                    ⌠⌠... Repeat for the '~' : ['','"""...','"','`','~']
                          Implicitly output

5:

♠              Push 256
 ((...         Decrement until it reaches the correct byte representing the code
               Repeat for each character of the code
      DÄ       Repeat the next instruction 14 times
        ß      Wrap the top 4 elements in an array
         ─     Flatten the resulting monstrosity
          ·    Triplicate the array
           ö   Map the next 7 instructions over the array
                      Stack : [[..],[..],num]
            ♠         Push 128
             ,        Reverse subtraction : [[..],[..],128-num
              ♦M-$    Push the ( character
                  *   Repeat it 128-num times
                   DÄß─         Gather that up in an array and flatten again
                       ö        Map the next 6 instructions
                        7($$$qq
                    7($$$q    Print a ♠, without newline
                              q   Print the brackets without newline
                                  Stack : [[..],[..]]
                               $     Map the number to their values in the code page
                                Äq   Map print over each element
                                  ╘  Discard the last element of the stack

6:

कारण यह Quine है तो दूसरों की तुलना में बहुत लंबे समय तक कि तार incrementing यूनिकोड अभ्यावेदन का उपयोग करता है, जो वास्तव में, कोड में पात्रों में से कुछ के लिए बेकार है, खासकर जब हम चरित्र बनाने के लिए कोशिश कर रहे हैं कोड में है, जो कोड अनावश्यक रूप से बढ़ा 8000 से अधिक वर्णों द्वारा, जो तब प्रतिनिधित्व राशि को बहुत बड़ी मात्रा में बढ़ाता है।

⌂         Push an * character
 ))...    Increment until we reach the right character + 8
      ♫{ }            Repeat 10000 times
        α             Wrap the top two elements in an array
          ♫{     }    Then repeat 10000 times
            m{{}}     Shallowly flatten the array
                  h∞<     Double the array
                     m{          Map the doubled array to
                       ïí½<¿{    If it is the first half of the array
                             ⌂⌂  Push two asterisks
                               )))...    Increment into a '⌂' (there are something like 8000 )s here, with a couple of ! to help
                                     @   Rotate the top three elements
                                         Stack : ["⌂",char,"*"]
                                      0{     α4<{}=}←  Repeat while the asterisk is not the char
                                        ⌂⌡)   Push a )
                                           @  Rotate it under the char
                                            ) Increment the asterisk
                                                     ;;   Pop the extra copies of the character
                                                       }{  Else
                                                         ⌡⌡⌡⌡}   Subtract 8 from the character
                                                              }{}  End map and flatten array
                                                                   Print implicitly

यदि मैथॉल्फ पर देशी कोड पृष्ठ का उपयोग किया गया था या नहीं, तो यह अंतिम क्वीन काफी कम हो जाएगा।


मैं आपकी सरलता से चकित हूं, मुझे कुछ स्पष्टीकरण पसंद हैं कि आप इन पर कैसे काम कर पाए। पहले मैं मूल क्वीन चुनौती से पहचानता हूं, लेकिन बाकी सभी ऐसे दिखते हैं जैसे उन्होंने हमेशा साथ आने के लिए लिया था।
अधिकतम

@ maxb मैं एक छठी क्वीन पर काम कर रहा हूं, और एक बार स्पष्टीकरण पोस्ट करने के बाद या तो मैं इसे पोस्ट करूंगा या इसे छोड़ दूंगा। btw, chr / ord और incrementing वर्ण कमांड असंगत लगते हैं। पहला कोड पृष्ठ का उपयोग करता है, जहां दूसरा ठेठ यूनिकोड का उपयोग करता है (जो कि 6 वीं क्वीन को इतना लंबा बना रहा है)
जो किंग

मुझे महसूस हुआ कि इसे लागू करने के कुछ समय बाद, मैंने chr/ordउनमें से एक के लिए उपयोग किया , मुझे लगता है कि दोनों कोड पृष्ठ का उपयोग करना चाहिए।
मैक्स

6

पायथन 2, 2 क्वाइन, 434 353 349 446 बाइट्स

यह ज्यादातर सिर्फ यह देखने के लिए था कि क्या मैं इसे पायथन में कर सकता हूं।

30 बाइट्स (एक अनुगामी न्यूलाइन सहित):

z='z=%r;print z%%z';print z%z

और 416 बाइट्स, जिसमें कोई अनुगामी न्यूलाइन नहीं है:

exec"696d706f7274207379730a793d222222696d706f7274207379730a793d7b7d0a7379732e7374646f75742e777269746528276578656322272b792e666f726d6174282722272a332b792b2722272a33292e656e636f6465282268657822292b27222e6465636f64652822686578222927292222220a7379732e7374646f75742e777269746528276578656322272b792e666f726d6174282722272a332b792b2722272a33292e656e636f6465282268657822292b27222e6465636f6465282268657822292729".decode("hex")

(लिन के लिए 81 बाइट्स का आभार व्यक्त किया गया, लेकिन न्यूलाइन के बारे में देखभाल करने के कारण एक भार बढ़ गया।)

व्याख्या

पहले वाला सिर्फ मानक छोटा पायथन क्वीन है , लेकिन संशोधित न करने के लिए _। चूंकि यह पायथन 2 है, इसलिए यह भी उपयोग नहीं करता है (या )

दूसरे ने कुछ सोचा। लंबे स्ट्रिंग को hexकोडेक का उपयोग करके एन्कोड किया गया है (इस प्रकार गारंटी है कि इसमें केवल शामिल होगा 0-9 और a- f) और डिकोड्स होंगे

import sys
y="""import sys
y={}
sys.stdout.write('exec"'+y.format('"'*3+y+'"'*3).encode("hex")+'".decode("hex")')"""
sys.stdout.write('exec"'+y.format('"'*3+y+'"'*3).encode("hex")+'".decode("hex")')

यह अपने स्वयं के स्रोत कोड को प्राप्त करने के लिए quine trickery का उपयोग करता है, फिर इसका उपयोग करके एन्कोड करता है hex_codec , और फिर प्रिंट यह से घिरा हुआ exec"".decode("hex"), का उपयोग करते हुए sys.stdout.writeएक नई पंक्ति मुद्रण से बचने के लिए। इस कोड को चलाना दूसरी क्वीन को आउटपुट करता है, जो कि मैंने इसे जेनरेट किया है।

मुझे संदेह है कि पायथन में दो से अधिक असंभव है, हालांकि मैं यह देखना चाहूंगा कि क्या मैं गलत हूं!

यदि आप eval quines बुरा मत मानना

अर्जन जोहानसन ने पूर्व-एन्कोडेड दूसरी रानी के लिए निम्नलिखित सुझाव दिए

y="""import sys
sys.stdout.write('exec"'+('y='+'"'*3+y+'"'*3+';exec y').encode("hex")+'".decode("hex")')""";exec y

जो निम्न आउटपुट के लिए 30 + 248 = 278 बाइट्स स्कोर करेगा :

exec"793d222222696d706f7274207379730a7379732e7374646f75742e777269746528276578656322272b2827793d272b2722272a332b792b2722272a332b273b65786563207927292e656e636f6465282268657822292b27222e6465636f64652822686578222927292222223b657865632079".decode("hex")

execइस तरह का उपयोग PPCG उचित क्वीन नियमों के अनुसार धोखा नहीं दे रहा है लेकिन यह मुझे कुछ हद तक धोखा दे रहा है (सुरुचिपूर्ण और चतुर, लेकिन अभी भी धोखा दे रहा है), क्योंकि कुछ वर्णों को कोड और डेटा दोनों के रूप में उपयोग किया जा रहा है। (हालांकि मेरा संस्करण उपयोग नहीं करता है exec, कोड और डेटा अलग हैं।) इसलिए मैं अपना स्कोर 446 पर रखूंगा।


1
"hex"के बजाय काम करता है "hex_codec", जो आपको कुछ बाइट्स को बचाना चाहिए!
लिन

1
यदि आप नए अंक को पीछे छोड़ते हुए पहली क्वीन के अंत में सिर्फ एक रिक्त रेखा क्यों नहीं जोड़ते ...?
mbomb007

1
इस तरह । मैं समझता हूं कि यह निष्पादन / निष्कासन वाली भाषाओं में एक सुंदर मानक क्वीन ट्रिक है।
अर्जन जोहानसन

1
पहले क्वीन के समान प्रारूप का पुन: उपयोग क्यों नहीं किया जाता है? इस
जो राजा

2
print '<tab>',अंत में एक स्थान नहीं जोड़ता है। इसके प्रयोग से आप जो किंग के सुझाव के अनुसार 85 बाइट्स कर सकते हैं: tio.run/…
ovs

5

जाप , 2 3 क्वाइन, 106 172 बाइट्स

पहले एक मेरे एन चार quine उत्तर का एक सुंदर क्रिया संस्करण है ।

[91,57,49,100,185,44,85,44,186,57,51,100,185,44,186,49,48,100,185,44,186,85,109,100,185,172,93,172]
[91d¹,U,º93d¹,º10d¹,ºUmd¹¬]¬

इसे यहाँ आज़माएँ

दूसरी रानी ईथप्रोडक्शन की अच्छी क्वीन है , जो कि जाप के लिए एक अच्छी क्वीन है।

"iQ ²"iQ ²

इसे यहाँ आज़माएँ

तीसरे एक का उपयोग करता है ``और डेटा को संग्रहीत करने के लिए X-कोडिंग का उपयोग करता है ।

T=`f=fR;Zff-R-ReX%`;`T=\``+T+Tc^#

इसे यहाँ आज़माएँ

चूँकि ()'अभी भी उपलब्ध हैं, इसलिए एक और क्वीन को निचोड़ना संभव हो सकता है।


1
मैं वास्तव में, वास्तव में पहले एक को गोल्फ करने की कोशिश करना चाहता हूं, लेकिन मुझे पता है कि, बोर्ड पर कुछ बियर के साथ, जैसे ही मैं एक एकल चरित्र को बदलने की कोशिश करता हूं, मेरा दिमाग फट जाएगा! धिक्कार है!
झबरा

@ शैगी नीचे की रेखा लेना और इसके माध्यम से चलना "'[+U+']+R+(Umd)¬"q mcआपको त्वरित अपडेट के लिए पहली पंक्ति देता है, अगर यह कोई मदद करता है।
नाइट

मैंने और अधिक मुख्य प्रतीकों को उपलब्ध कराने के लिए पहला समाधान भी निकाल दिया है, अब एक और क्वीन को जोड़ना व्यावहारिक रूप से संभव हो सकता है।
लीख

रुको, अब आपका स्कोर अधिक है!
झबरा

@ सहज रूप से इसलिए, मैं एक और क्वीन के लिए जगह बनाने की कोशिश कर रहा हूं, इसे छोटा मत बनाइए।
लीख

4

गोल> <> , 2 3 क्वाइन, 17 28 27 26 बाइट्स

6 बाइट्स

"r2ssH

इसे ऑनलाइन आज़माएं!

११ १० ९ बाइट्स

'3d*Wo{|;

इसे ऑनलाइन आज़माएं!

11 बाइट्स

Eh`#Ma0piS0

इसे ऑनलाइन आज़माएं!

गोल> <> किसी भी प्रिंट को प्रिंट करने के तीन तरीके हैं:

  • o एक मान पॉप करें और चार के रूप में प्रिंट करें
  • H पॉप सब कुछ, चार के रूप में प्रिंट, और पड़ाव
  • S"..." स्टैक को प्रभावित किए बिना स्ट्रिंग शाब्दिक प्रिंट करें

लेकिन मुझे एक क्वीन का उपयोग करने का तरीका नहीं मिला S"..." केवल आउटपुट पद्धति के रूप में , इसलिए मैं उपरोक्त दोनों के साथ आया, दो प्रकार के स्ट्रिंग करता हूं।

तीसरा (जो राजा द्वारा) का उपयोग करता pआदेश बनाने के लिए "में S"मक्खी पर, बारी में अंत में शून्य के अलावा सब कुछ प्रिंट है। फिर Ehशून्य को प्रिंट करता है और बाहर निकलता है।

अब जब हमने सभी आउटपुट कमांड और pकमांड का उपयोग किया है, तो मेरा मानना ​​है कि एक और क्वीन बनाना असंभव है (जब तक कोई S"क्वीन के साथ नहीं आता है p)।


कैसे के बारे में इस के लिए S"..."?
जो किंग

3

रूबी , 2 क्वाइन, 27 + 44 = 71 बाइट्स

$><<<<2*2<<2
$><<<<2*2<<2
2

इसे ऑनलाइन आज़माएं!

s=%q{s=%q{S};s[?S]=s;puts s};s[?S]=s;puts s

इसे ऑनलाइन आज़माएं!

मैं मुख्य रूप से आउटपुट के तरीकों से सीमित हूँ, यहाँ। स्ट्रिंग्स को मैनिपुलेट करने के कुछ तरीके हैं, लेकिन $><<सभी प्रयोग करने योग्य आउटपुट विधियों से एक तरफ बहुत अधिक अंतर लगता है। मुझे लगता है कि इसके साथ एक रास्ता हो सकता है, evalलेकिन यह विभिन्न प्रकार के कई स्ट्रिंग जोड़तोड़ करने के लिए मुश्किल है।


3

जावास्क्रिप्ट ईएस 6, 2 क्वाइन, 43 + 22 = 65 बाइट्स

क्विन 1:

(function f(){return[,f,'))'].join('(')}())

2:

g=z=>"g="+g+";g``";g``

आप कार्यों को लागू न करके और फिर दूसरे में एक टेम्प्लेट शाब्दिक का उपयोग करके कुछ बाइट्स बचा सकते हैं।
झबरा

2
तो जावास्क्रिप्ट आउटगॉल्फ्स जप
dylnan

@dylnan तब तक नहीं जब तक यह एक तीसरी रानी नहीं जोड़ता।
नाइट

@ शगुन हे, आपके इनपुट के लिए धन्यवाद, लेकिन मैं उलझन में हूं - क्या एक क्वीन एक पूर्ण कार्यक्रम नहीं होना चाहिए? यदि यह एक फ़ंक्शन हो सकता है, तो क्या इसे केवल स्वयं प्रिंट करना चाहिए? तो g=z=>"g="+gएक वैध जेएस क्वीन होगा?
पेड्रो ए

1
@ मैं देख सकता हूँ कि मैं क्या कर सकता हूँ: P जब dylnan ने टिप्पणी की, तो japt के पास केवल 2 quines थे
Pedro A

3

> <> , 2 quines, 8 + 16 = 24 बाइट्स

8 बाइट्स

#o<}-1:"

इसे ऑनलाइन आज़माएं!

इस उत्तर से लिया गया ।


16 बाइट्स

'r3d*d8*7+e0p>>|

इसे ऑनलाइन आज़माएं!

इस पर आधारित है 'r3d*>o<सिवाय Quine, oऔर <नहीं किया जा सकता, तो मैं बदल दिया <साथ |और डायनामिक रूप से तैयार o(111 = 8 * 13 + 7) और रख दिया जहां 2 >है।


2 खदानों की सीमा है

दुर्भाग्य से, हम आउटपुट कमांड की संख्या से सीमित हैं। nउपयोगी नहीं है क्योंकि यह केवल संख्याओं को आउटपुट करता है, इसलिए oइसे किसी भी क्वीन में निष्पादित किया जाना चाहिए। गतिशील बनाने oका एकमात्र तरीका है p। तो एक क्वीन का उपयोग कर सकते हैं o, और दूसरा इसे बना सकता है p, लेकिन कोई 3 क्वीन नहीं हो सकता है।

यदि यह मायने रखता है तो स्टैक पर स्रोत कोड को छोड़ना एक तीसरी रानी हो सकता है।


2

जावा 10, 2 क्वाइन, 1448 1248 बाइट्स

1350 1122 बाइट्स

\u0076\u002D\u003E\u007B\u0076\u0061\u0072\u0020\u0072\u003D\u0022\u0076\u002D\u003E\u007B\u0076\u0061\u0072\u0020\u0072\u003D\u0025\u0063\u0025\u0073\u0025\u0031\u0024\u0063\u003B\u0072\u002E\u0066\u006F\u0072\u006D\u0061\u0074\u0028\u0072\u002C\u0033\u0034\u002C\u0072\u002C\u0039\u0032\u0029\u002E\u0063\u0068\u0061\u0072\u0073\u0028\u0029\u002E\u0066\u006F\u0072\u0045\u0061\u0063\u0068\u0028\u0063\u002D\u003E\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u0066\u0028\u0025\u0031\u0024\u0063\u0025\u0063\u0025\u0033\u0024\u0063\u0075\u0025\u0025\u0030\u0034\u0058\u0025\u0031\u0024\u0063\u002C\u0063\u0029\u0029\u003B\u007D\u0022\u003B\u0072\u002E\u0066\u006F\u0072\u006D\u0061\u0074\u0028\u0072\u002C\u0033\u0034\u002C\u0072\u002C\u0039\u0032\u0029\u002E\u0063\u0068\u0061\u0072\u0073\u0028\u0029\u002E\u0066\u006F\u0072\u0045\u0061\u0063\u0068\u0028\u0063\u002D\u003E\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u0066\u0028\u0022\u005C\u005C\u0075\u0025\u0030\u0034\u0058\u0022\u002C\u0063\u0029\u0029\u003B\u007D

इसे ऑनलाइन आज़माएं।

के बराबर:

v->{var r="v->{var r=%c%s%1$c;r.format(r,34,r,92).chars().forEach(c->System.out.printf(%1$c%c%3$cu%%04X%1$c,c));}";r.format(r,34,r,92).chars().forEach(c->System.out.printf("\\u%04X",c));}

स्पष्टीकरण:

v->{                   // Method with empty unused parameter and no return-type
  var r="v->{var r=%c%s%1$c;r.format(r,34,r,92).chars().forEach(c->System.out.printf(%1$c%c%3$cu%%04X%1$c,c));}";
                       //  Unformatted source code
  r.format(r,34,r,92)  //  Formatted quine
   .chars()            //  Loop over the characters as integers
   .forEach(c->System.out.printf("\\u%04X",c));}
                       //   Print "\u" with hexadecimal value of these characters

126 बाइट्स

v->{int i='}'-'[';var s="v->{int i='}'-'[';var s=%c%s%c;System.console().printf(s,i,s,i);}";System.console().printf(s,i,s,i);}

System.console()nullजब कोई भी प्रदान नहीं किया जाता है, तो वापस आ जाएगा , इसलिए TIO एक रिटर्न देता हैNullPointerException इस मामले में

यह साबित करने के लिए कि यह एक काम कर रहा है, के System.console()साथ बदलें System.out: इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

v->{              // Method with empty unused parameter and no return-type
  int i='}'-'[';  //  Integer `i` = 34 (unicode value for double-quote)
  var s="v->{int i='}'-'[';var s=%c%s%c;System.console().printf(s,i,s,i);}";
                  //  Unformatted source code
  System.console().printf(s,i,s,i);}
                  //  Print formatted quine

सामान्य स्पष्टीकरण:

जावा में एक आमतौर पर इस तरह से किया जाता है:

  • String sअस्वरूपित स्रोत कोड शामिल हैं।
  • %s इस स्ट्रिंग को स्वयं के साथ इनपुट करने के लिए उपयोग किया जाता है s.format(...)
  • %c, %1$cऔर द34 डबल-कोट्स को फॉर्मेट करने के लिए उपयोग किया जाता है।
  • s.format(s,34,s) यह सब एक साथ रखता है।

जिस स्थिति में जावा 10 में सबसे छोटा क्वीन लैम्बडा-फंक्शन होगा, वह यह ( 82 बाइट्स ) होगा।

v->{var s="v->{var s=%c%s%1$c;return s.format(s,34,s);}";return s.format(s,34,s);}

इसे ऑनलाइन आज़माएं।

चूंकि जावा में दो क्वाइन रखने का एकमात्र तरीका यूनिकोड संस्करण का उपयोग करना है \uHEXA, जो संकलन के दौरान वर्णों में परिवर्तित हो जाता है, इसलिए मैं 0123456789ABCDEF\uगैर-यूनिकोड संस्करण में वर्णों का उपयोग करने में असमर्थ हूं । तो, छोटे गैर यूनिकोड संस्करण का उपयोग करेंगे System.console()के बजाय returnया System.out(दोनों युक्त एक 'यू'), और का उपयोग करेगा '}'-'['और दो बार %cके बजाय 34और %1$c

यूनिकोड संस्करण के बारे में ध्यान देने योग्य कुछ बातें:

  • मैं उद्देश्य के %04Xबजाय का उपयोग कर रहा हूँ%04x (अपरकेस के बजाय हेक्साडेसिमल के लिए) ।
  • मैं उपयोग कर रहा हूं 92, %cऔर%3$c स्लैश को प्रारूपित करना है।
  • \Uलोअरकेस के बजाय एक पूंजी का उपयोग करने की \uअनुमति स्पष्ट रूप से नहीं दी गई है, अन्यथा मैं सिर्फ returnछोटे गैर-यूनिकोड संस्करण में उपयोग किया होता ।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.