एक मेटाक्वाइन लिखें


19

मेटाक्वाइन एक प्रोग्राम है जो कि एक क्वीन नहीं है, लेकिन जिसका आउटपुट, जब उसी भाषा में प्रोग्राम के रूप में चलाया जाता है, तो वह एक क्वीन है।

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

नियम के लिए नियम

केवल सच quines स्वीकार कर रहे हैं। यही है, आपको पूरे स्रोत कोड को शब्दशः प्रिंट करने की आवश्यकता है, बिना :

  • अपने स्रोत कोड को पढ़ना, प्रत्यक्ष या अप्रत्यक्ष रूप से।
  • एक REPL वातावरण पर निर्भर है जो सिर्फ मूल्यांकन करता है और आपके द्वारा खिलाए गए प्रत्येक अभिव्यक्ति को प्रिंट करता है।
  • भाषा की विशेषताओं पर भरोसा करना जो केवल कुछ मामलों में स्रोत का प्रिंट आउट करते हैं।
  • क्वीन के सभी या भाग को लिखने के लिए त्रुटि संदेश या STDERR का उपयोग करना। (आप STDERR को चीजें लिख सकते हैं या चेतावनी / गैर-घातक त्रुटियां उत्पन्न कर सकते हैं जब तक कि STDOUT एक वैध क्वीन है और त्रुटि संदेश इसका हिस्सा नहीं हैं।)
  • स्रोत कोड में शाब्दिक रूप से शामिल हैं (चाहे वे स्ट्रिंग शाब्दिक हों, संख्यात्मक शाब्दिक, आदि) और / या एनओपी।

किसी भी गैर-दमनकारी आउटपुट (जैसे कॉपीराइट नोटिस, स्टार्टअप / शटडाउन संदेश, या एक अनुगामी लाइन फ़ीड) को क्वीन की वैधता के लिए आउटपुट में अनदेखा किया जा सकता है।

उदाहरण

नियम की अनदेखी करना जो शाब्दिक-केवल कार्यक्रमों और अंतर्निहित क्विंग को मना करता है, यह गंभीर रूप से एक मेटाक्वाइन होगा:

"Q"

कार्यक्रम में एकल स्ट्रिंग शाब्दिक शामिल हैं "Q", जो कि आउटपुट पर स्पष्ट रूप से मुद्रित है। जब आउटपुट ( Q) चलाया जाता है, तो यह एक क्वीन है ( Qबिल्ट-इन क्वाइन फ़ंक्शन है)।


2
क्या शाब्दिक / टिप्पणी / NOPs नियम मेटाटोटे के आउटपुट (अर्थात वास्तविक क्वीन) पर भी लागू होता है? अन्यथा पूर्व। Tएक आसान 1 बाइट पाइथ उत्तर है।
डॉर्कनोब

@Doorknob हाँ, मैं स्पष्ट करूँगा।
Mego

8
मैं वास्तव में नहीं देखता कि इस चुनौती का कठिन बिंदु कहां है। क्या रणनीति "स्ट्रिंग को प्रिंट नहीं करती है जिसमें सबसे कम ज्ञात क्वीन शामिल है" प्रत्येक भाषा के लिए जीतने की बहुत अधिक गारंटी है?
18

1
@ फ़ेटलाइज़ वेल मुझे लगता है कि दिलचस्प सवाल यह है कि क्या यह उसी मात्रा में या कम बाइट्स की तुलना में किया जा सकता है।
मार्टिन एंडर

3
@ फ़ेटलाइज़ क्या यह भी संभव नहीं है कि आप एक छोटी मेटाक्वाइन लिख सकें जो एक लंबी लेकिन वैध क्वीन को प्रिंट करता है?
ऋजोमेटिक

जवाबों:


15

सीजाम, 6 बाइट्स

"_p"_p

प्रिंटों

"_p"
_p

जो CJam में सबसे छोटी उचित रानी है।

इसका परीक्षण यहां करें।

व्याख्या

दोनों कार्यक्रम ठीक उसी तरह से काम करते हैं, क्योंकि उचित क्वीन के अंदर लाइनफीड एक नो-ऑप है और केवल इसलिए शामिल है क्योंकि इसे आउटपुट से हटाने के लिए अधिक महंगा है। कार्यक्रम कैसे काम करते हैं:

"_p"  e# Push this string.
_     e# Duplicate it.
p     e# Print a string representation of the top of the stack (i.e. the string with
      e# quotes) followed by a linefeed.
      e# The other copy is then printed automatically at the end of the program, without
      e# stringifying it.

पक्षीय लेख

गोल्फस्क्रिप्ट में भी यही काम करता है

".p".p

जो प्रिंट करता है

".p"
.p

एक अनुगामी लाइनफीड के साथ, जो बदले में सबसे कम ज्ञात खानों में से एक है।


10

अजगर, १२ ११ १० 9 बाइट्स

@ Pietu1998 के लिए एक और बाइट धन्यवाद के साथ दस्तक दी।

jN B".[9N

यह प्रिंट करता है

.[9N".[9N

जो पाइथ में एक रानी है। आप इसे यहाँ आज़मा सकते हैं


क्या आउटपुट सबसे कम पायथ क्वीन के लिए एक नया रिकॉर्ड है? मुझे विश्वास नहीं होता कि मैंने इसे पहले कभी देखा है।
21

मुझे यह कहीं और नहीं मिला। मैं इसके साथ एक मेटाक्वाइन प्राप्त करने की कोशिश कर रहा था।
रिहाजोमैटिक

1
शायद आपको इसे मूल क्वीन चुनौती के उत्तर के रूप में पोस्ट करना चाहिए :)
ETHproductions

2
आप इसे 9 jN B".[9Nया नीचे का उपयोग करके प्राप्त कर सकते हैं .[9N"jN B। ( jN B"jN B9 बजे एक और सच्ची क्वीन: द्विभाजित पहचान समारोह और इससे जुड़ें "।)
PurkkaKoodari

@ Pietu1998 धन्यवाद! मुझे पता था कि इसे पाने का एक तरीका होना चाहिए 9. क्या पाइथ में 9 बाइट्स से कम उम्र के बच्चे हैं?
रिहाजोमैटिक

8

विखंडन , 6 बाइट्स

!+OR"'

प्रिंटों

'!+OR"

कौन कौन से सबसे छोटा विखंडन है । यह काम करता है क्योंकि कार्यक्रम के चक्रीय बदलाव इसके उत्पादन को पूरी तरह से अप्रभावित छोड़ देते हैं।

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



4

पायथन 2, 29 बाइट्स

_="_=%r;print _%%_";print _%_

जाने-माने शॉर्ट पायथन क्वीन को आसानी से मेटाक्वाइन में बदल दिया जाता है :)

और, चूंकि हमें अनुगामी न्यूलाइन के मिलान के बारे में चिंता करने की आवश्यकता नहीं है, इसलिए मेटाक्वाइन वास्तव में छोटा है!


मुझे हरा दो, फिर से :( मैंने एक रैपर के बारे में सोचा, लेकिन तुम्हारा बेहतर है
एरिक आउटग्राफर

3

जाप, 15 13 बाइट्स

Q+"+Q ³s7J" ²

इसे ऑनलाइन टेस्ट करें!

यह प्रोग्राम आउटपुट करता है

"+Q ³s7J"+Q ³s7J

जो कि जाप में सबसे छोटी ज्ञात रानी है।

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

Q+"..." // Take a quotation mark plus this string.  "+Q ³s7J
²       // Repeat it twice.                         "+Q ³s7J"+Q ³s7J
        // Implicit output

गैर-प्रतिस्पर्धी संस्करण, 11 बाइट्स

Q+"+Q ²é" ²

मैंने अभी जोड़ा है é , एक "रोटेट" कमांड। इसलिए

"+Q ²é"+Q ²é

अब एक वैध रानी है।


1

रूबी, २५ २३

puts"puts <<2*2,2
"*2,2

क्लासिक रूबी हेरेडॉक क्वीन उत्पन्न करता है

puts <<2*2,2
puts <<2*2,2
2

पुराना हल

_='_=%p;$><<_%%_';$><<_%_

दोहरे उद्धरण चिह्नों के साथ प्रतिस्थापित एकल उद्धरणों को छोड़कर खुद को उत्पन्न करता है।


1

जावास्क्रिप्ट, 50 बाइट्स

a="a=%s;console.log(a,uneval(a))";eval(a.slice(5))

सबसे कम गैर-स्रोत-पढ़ने वाले जेएस क्वीन के आधार पर आदमी को जाना जाता है , लेकिन एक अच्छा 8 बाइट्स छोटा होता है। प्रिंटों

a="a=%s;console.log(a,uneval(a))";console.log(a,uneval(a))

जो एक रानी है।


1

मछली (> <>), 17 बाइट्स

यह क्लासिक फिश क्वाइन का उपयोग करके काम करता है, "r00g!;oooooooo|लेकिन {जो पूरे स्टैक को बाईं ओर शिफ्ट करता है, ताकि मूल कार्यक्रम एक क्वीन न हो, लेकिन यह आउटपुट है, जब रन होता है, तो होता है।

"{r00g!;oooooooo|

आउटपुट:

"r00g!;oooooooo|

जो एक मछली रानी है!


1

जेली , ३ बाइट्स (गैर-प्रतिस्पर्धात्मक)

दुर्भाग्य से, आवश्यक परमाणु चुनौती से लगभग 2 सप्ताह छोटे हैं।

Metaquine

”Ṙv

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

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

”Ṙv  Main link. No arguments.

”Ṙ   Set the left argument and the return value to the character 'Ṙ'.
  v  Dyadic eval; evaluate the return value with the left argument as argument.
     Executing the atom Ṙ on the argument 'Ṙ' prints a string representation of
     the character, i.e., the string "”Ṙ".
     Finally, v returns its unaltered argument, which is printed implicitly.

Quine

”ṘṘ

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

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

”ṘṘ  Main link. No arguments.

”Ṙ   Set the left argument and the return value to the character 'Ṙ'.
  Ṙ  Print a string representation of the character, i.e., the string "”Ṙ".
     (implicit) Print the unaltered return value.

चूंकि दूसरा पहले दो वर्णों ( ”Ṙ) को छापता है, यह हमारी परिभाषा के अनुसार एक उचित उद्धरण है।


1

ऑक्टोपेन-बारू, 22 बाइट्स

** गैर प्रतिस्पर्धी जवाब

愛[35211].pack歩U')

रूबी उत्पादन

puts [35211].pack(' U')

जो आउटपुट देता है । जो ऑक्टोपेन-बारू में एक रानी है!


1

7 , 2 बाइट्स, भाषा चुनौती देती है

कार्यक्रम दो बाइट्स लंबा है, और कई तरीकों से व्याख्या की जा सकती है; हेक्स डंप के रूप में:

00000000: 4ff4                                     O.

कोडपेज 437 के रूप में:

O⌠

या, सबसे आसानी से, अष्टक में (जो 7 देशी उपयोग करता है):

237723

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

इसके कामकाज बहुत सरल हैं: यह मानक 7 क्वीन है जिसमें दो हिस्सों के बीच एक नो-ऑप स्टैक तत्व डाला गया है, इसे अलग बनाने के लिए (इस संदर्भ में, 7स्टैक तत्वों को अलग करता है)। (मैं इसे शुरू में भी डाल सकता था,723723 सकता था। मैंने इसकी व्याख्या अंत में नहीं की क्योंकि अनुगामी 7s अनुगामी व्हॉट्सएप की तरह हैं, और पैक्ड एन्कोडिंग में इसे अनदेखा किया जाता है, इस प्रकार यह आउटपुट प्रोग्राम से अलग नहीं होगा। )

संयोग से, यह कार्यक्रम हेक्साडेसिमल में एक है, लेकिन यह केवल संयोग है।


1

अंडरलोड, 11 बाइट्स

(:aSS)::aSS

बहुत साधारण। यह प्रिंट करता है (:aSS):aSS, जो मानक अंडरलोड क्वीन है।


1

ब्रेकीलॉग , 12 बाइट्स

"~k;?w₁"gjw₃

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

132 पर एक ही लंबाई metaquine रूपों में से एक Quine मैं अनुवाद से Fatalize के Brachylog v1 (गैर धोखाधड़ी) Quine। मैंने वास्तव में उन सभी को प्रिंट करने के लिए एक (गैर-गोल्फ, और समग्र मूर्खतापूर्ण) कार्यक्रम लिखा था:

{[[";?","gj","jḍ"],"₁₃₅₇"]j∋ᵐ{ḍ≠&};"\"~~k~ww~w\"~ww~w~n"}ᶠ{lw" metaquines generated:
"ẉ&}w₁ᵐ

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

: वहाँ मूल Quine जो inconsequentially प्रतिस्थापित किया जा सकता के दो भाग हैं ;?करने के लिए बदला जा सकता है gjया jḍ, और करने के लिए बदला जा सकता है , या, । यदि हम उन्हें स्ट्रिंग शाब्दिक के बाहर एक तरह से और स्ट्रिंग शाब्दिक के अंदर एक अलग तरीके से रखते हैं या बदलते हैं, तो आउटपुट स्रोत से मेल नहीं खाएगा, क्योंकि स्ट्रिंग शाब्दिक के भीतर जो भी मौजूद थे, उसे अंदर और बाहर दोनों जगह मुद्रित किया जाएगा। जिसके परिणामस्वरूप एक प्रारंभिक परीक्षा कार्यक्रम नहीं था।

;?, gjऔर jḍविनिमेय हैं क्योंकि सभी तीन जोड़ी स्ट्रिंग शाब्दिक स्वयं के साथ हैं: कार्यक्रम के लेआउट के कारण, इनपुट चर ?स्ट्रिंग के साथ एकीकृत है, इसलिए ;?स्ट्रिंग को खुद के साथ जोड़ते हैं; लेआउट की परवाह किए बिना, gjएक सूची में स्ट्रिंग लपेटता है जो तब खुद को सम्‍मिलित किया जाता है; वैसे हीjḍ स्ट्रिंग को स्वयं में समेटता है फिर इसे आधे हिस्से में विभाजित करता है।

विषम-संख्या असंबंधित है या इनपुट पर सेट है, और उच्च बिट एन्कोड करता है कि क्या छपाई तुरंत की जाती है या यदि कार्यक्रम के अंत तक इसमें देरी हो रही है तो यह बैकट्रैकिंग के अधीन हो सकता है। (वे सदस्यताएं मेरा पहला और अब तक का सबसे बड़ा योगदान Brachyloglog में था।) चूंकि क्वीन और मेटाक्वाइन आउटपुट वेरिएबल का उपयोग नहीं करते हैं और पीछे नहीं जाते हैं, सभी चार विषम सदस्यता बराबर हैं।w सदस्यताएँ विनिमेय हैं, क्योंकि मूल रूप से wकेवल 0 या 1 को ले सकते हैं, जिसमें 0 को इनपुट करना wऔर 1 को दूसरे के साथ स्वरूपित पहले तत्व को प्रिंट करना है, के लिए सबस्क्रिप्ट इन्वेंट्रीw कुछ ऐसे हो गई है जो बाहरी रूप से एक बिटफील्ड के रूप में कार्य करती है: सबस्क्रिप्ट का कम बिट एन्कोड करता है चाहे वह सीधा हो या स्वरूपित हो, बीच का बिट इनकोड करता है कि आउटपुट चर सेw


0

Befunge-93, 22 बाइट्स

"+1_@#`+39:,g0:">:#,_@

मैंने बस मानक क्वीन लिया, इसे उद्धरणों में डाला, इसे उलट दिया (ताकि यह स्टैक पर सही ढंग से लोड हो जाए), और फिर अंत में स्टैक-प्रिंट जोड़ा।

यह सामान्य कुनैन में 8 अक्षर जोड़े गए हैं, इसलिए यह संभव है कि एक बेहतर समाधान हो।


क्या आप सिर्फ मानक क्वीन नहीं ले सकते थे और एक नई पंक्ति जोड़ सकते थे? नई लाइन पार्सिंग स्तर पर गायब हो जाएगी, जो आपको केवल मानक क्वीन (जो खुद ही प्रिंट करेगी) के साथ छोड़ देगी।

0

टर्टल , 52 बाइट्स ( नॉनकमेटिंग )

मूल क्वीन से 1 कम

@##'@r,r,r-{ +.r_}r{ +.r_}"#'@r,r,r-{ +.r_}r{ +.r_}"

उसी तरह से काम करता है, सिवाय इसके कि इसमें अंत में कोई पात्र नहीं है, जब दौड़ते हैं, तो इसके अंत में एक चरित्र होगा, जो आउटपुट को प्रभावित नहीं करता है, क्योंकि यह # को # पर लिखता है। ध्यान दें कि आउटपुट क्वीन चुनौती के लिए मेरे द्वारा बनाए गए क्वीन से थोड़ा अलग है, लेकिन वही काम करता है: "# लिखता है, जो कि उसका अपना अंतिम चरित्र है, जैसे कि मैंने बनाया था। था



0

pushy , 7 बाइट्स

गैर-प्रतिस्पर्धी भाषा के रूप में चुनौती को चुनौती देता है।

यह मानक क्वीन है, लेकिन नए सिरे से हटा दिया गया है। न्यूलाइन्स का मतलब पुसी में कुछ भी नहीं है, लेकिन प्रिंट ऑपरेटर के मानक विभाजक हैं, और इसलिए एक सच्चे क्वीन की आवश्यकता है।

95 34_"

इसे ऑनलाइन आज़माएं!यह आउटपुट:

95 34
_ "

सबसे छोटा पुसी क्वीन कौन सा है - इस पर एक स्पष्टीकरण कि यह कैसे काम करता है यहां पाया जा सकता है

वैकल्पिक रूप से, H5-34_"एक ही बाइट गिनती के लिए काम करता है।


0

फोम , 14 बाइट्स

[. .'|: ~|]: ~

यह दूसरी फोम क्वीन को प्रिंट करता है जो यहां पाई जा सकती है । यह वास्तव में छोटा है क्योंकि .हमेशा प्रत्येक तत्व के बीच एक स्थान रखा जाएगा, लेकिन तीसरे टोकन में बार मुझे इससे पहले अंतरिक्ष को छोड़ने की अनुमति देता है।


मैंने गैर-प्रतिस्पर्धात्मक बिट को हटा दिया है क्योंकि साइट नीति के अनुसार नई भाषाएं स्वचालित रूप से गैर-प्रतिस्पर्धात्मक नहीं हैं।
Mego

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