एक सेमिक लिखें


10

मान लीजिए कि आपके पास 2 भाषाएँ हैं, Aऔर B। एक स्ट्रिंग sएक अर्धवृत्त है Aऔर Bयदि यह निम्नलिखित शर्तों को पूरा करती है:

  1. sभाषा में एक क्वीन है A
  2. sमें एक बहुभाषी है Aऔर B
  3. प्रोग्राम के sरूप में चलने का आउटपुट Bएक अलग स्ट्रिंग है s', जो कि एक क्वीन है B

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

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

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

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

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

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

Polyglots के लिए नियम

उपयोग की जाने वाली दो भाषाएँ अलग-अलग होनी चाहिए। विशेष रूप से:

  • वे एक ही भाषा के अलग-अलग संस्करण नहीं होने चाहिए (जैसे कि पायथन 2 बनाम पायथन 3)।
  • वे एक ही भाषा (जैसे पास्कल बनाम डेल्फी) की अलग-अलग बोलियाँ नहीं होनी चाहिए।
  • एक भाषा अन्य एक का उपसमूह नहीं हो सकती है (जैसे C बनाम C ++ 1 )।
  • एक भाषा अन्य की तुच्छ व्युत्पन्न नहीं हो सकती है (उदाहरण के लिए माटलैब बनाम ऑक्टेव 2 , ब्रेनफक बनाम बूलफक बनाम टाइनीबीएफ बनाम शादियासफेक बनाम अन्य सभी तुच्छ ब्रेनफक डेरिवेटिव)।

विविध नियम

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

1: हाँ मुझे पता है कि C वास्तव में C ++ का सबसेट नहीं है। यह पॉलीग्लॉट्स के उद्देश्य के लिए एक माना जाने वाला पर्याप्त है, हालांकि, इसलिए मैं इसे इस चुनौती के लिए गिन रहा हूं।

2: बिंदु 1 से ऊपर की तरह, हालांकि ऑक्टेव तकनीकी रूप से मतलाब के साथ 100% संगत नहीं है, यह संगत होने के लिए डिज़ाइन किया गया था, और यह काफी करीब है कि एक मटलैब / ऑक्टेव बहुवचन को चुनौती देने की अनुमति देगा।


क्या ESMin के कॉपी ब्लॉक्स की अनुमति है?
21

@ThomasKwa मैं ESMin से परिचित नहीं हूं, तो क्या आप मुझे एक त्वरित गति प्रदान कर सकते हैं?
मेगो

एक कॉपी ब्लॉक शुरू करने के लिए एक कमांड है, जो पिछले सब कुछ के स्रोत कोड को प्राप्त करता है। मुझे लगता है कि अन्य जेएस गोल्फिंग भाषाओं में भी एक हो सकता है।
21

@ThomasKwa को पहले नियमों के तहत अनुमति नहीं दी जाएगी (स्रोत कोड को नहीं पढ़ना, प्रत्यक्ष या अप्रत्यक्ष रूप से)।
मेगो

1
@Downgoat जब तक यह किसी भी अन्य नियम नहीं तोड़ता, बिल्कुल। गाली देना quirks इस साइट का लक्ष्य है :)
Mego

जवाबों:


6

गोल्फस्क्रिप्ट + विखंडन , 19 18 बाइट्स

{".~
'!+OR"
2<}.~

अनुगामी लाइनफीड आवश्यक है।

यह गोल्फस्क्रिप्ट में एक सच्ची रानी है। इसे ऑनलाइन आज़माएं!

विखंडन में यह प्रिंट करता है

'!+OR"

जो विखंडन में एक सच्ची रानी हैइसे ऑनलाइन आज़माएं!

व्याख्या

गोल्फस्क्रिप्ट में, फॉर्म का कुछ भी

{...}.~

जब तक स्टैक पर ...एक स्ट्रिंग छोड़ देता है तब तक एक क्वीन है ".~".ब्लॉक डुप्लिकेट, वहाँ एक प्रतिलिपि अंत में मुद्रित हो जाता है कि ऐसा है कि, और ~कार्यान्वित यह है, तो हम मुद्रित करने के लिए उसकी सामग्री का उपयोग कर सकते .~ही। इस मामले में, ब्लॉक स्ट्रिंग को धक्का देता है

".~
'!+OR"

और फिर इसे पहले दो वर्णों के साथ जोड़ देता है 2<

विखंडन कार्यक्रम वास्तव में ठीक वैसा ही काम करता है, जैसा कि पहली और तीसरी पंक्ति कार्यक्रम द्वारा पूरी तरह से अनदेखा कर दिया जाता है।


6

रूबी + (जावास्क्रिप्ट या पायथन 3), 76 बाइट्स

यह एक और चुनौती है जिसे मेरी नई पसंदीदा भाषा का उपयोग करके हल किया जा सकता है, रूबी, जावास्क्रिप्ट और पायथन 3 के लगभग सामान्य उपसमूह; और यह देखते हुए कि हमारे पास विदेशी भाषाओं में अभी तक कोई जवाब नहीं है, और बहुत से लोग गैर-गोल्फ-भाषा समाधान देखना पसंद करते हैं, मैंने सोचा कि मैं एक योगदान दूंगा। इससे भी बेहतर, एक ही उत्तर एक ही समय में विभिन्न तरीकों से चुनौती को हल करता है।

यहाँ है s:

s="'";d='"';n='print("s="+d+s+d+";d="+s+d+s+";n="+s+n+s+";eval(n)")';eval(n)

यह रूबी में एक रानी है। यह जावास्क्रिप्ट या पायथन 3 में एक क्वीन नहीं है; यदि आप इसे उन भाषाओं में से किसी एक में चलाते हैं, तो इसके आउटपुट s'में एक अनुगामी न्यूलाइन है, और इस प्रकार अलग है:

एस = " '"; d =' " '; एन =' प्रिंट (" एस = "+ d + रों + डी +", घ = "+ S + डी + S +", एन = "+ रों + n + S +" ; eval (एन) ") '; eval (एन)

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

एक बोनस के रूप में, यह कार्यक्रम रिवर्स में समस्या को हल करता है। यदि आप s'रूबी में चलाने का निर्णय लेते हैं , तो यह मूल कार्यक्रम को sफिर से प्रिंट करेगा । जैसे, s'प्रश्न के उत्तर के लिए एक वैध (लेकिन थोड़ा लंबा, 77 बाइट्स पर) है।

इस बिंदु पर, मैं लगभग यह सोचना शुरू कर रहा हूं "क्या अंतर है कि क्या उत्पादन एक नई रेखा के साथ समाप्त होता है दो कार्यक्रमों को अलग-अलग गिनने के लिए पर्याप्त है" को एक मानक खामी माना जाना चाहिए, यह देखते हुए कि यह भाषाओं का दूसरा सेट लगता है (प्रसिद्ध गोल्फस्क्रिप्ट / सीजेएम से परे) जिसमें चाल को खींचना संभव है।


2

विट्सी (सुरक्षित मोड) और वाई, 9 बाइट्स, नॉनकंपेटिंग।

' Ugrd3*Z

विटसी में, यह एक क्वीन है। वाई में, यह प्रिंट Ugrd3*Z'; जब चलाया जाता है, तो यह प्रिंट Ugrd3*Z', जो कि वाई वाई में एक क्वीन है, हालांकि प्रश्न को स्थगित कर देता है।

Vitsy क्या देखता है:

 ' Ugrd3*Z
 '         Heyyyy a string! Let's do this!
  ........ Capturing a string! Oh, not done? Hm, let's go back to the start.
 '         There we go.
           (space) ...
   U       (no op)
    g      use count, disabled in safe mode
     r     reverse stack
      d3*  push a '
         Z print it all!

Y क्या देखता है:

' Ugrd3*Z
'         Push a space.
  U       Wrap around and capture.
   g      Print that. (Nothing else is printed.)

1
ध्यान दें कि यह केवल सुरक्षित मोड में काम करता है, या, बल्कि, इसके कुछ ... गैर-सुरक्षित मोड में अनपेक्षित दुष्प्रभाव हैं।
Addison Crump

1

CJam + GolfScript, 9 बाइट्स

"0$p"
0$p

यह सीजेएम में एक रानी है। गोल्फस्क्रिप्ट में, यह खुद को एक अनुगामी न्यूलाइन के साथ आउटपुट करता है, जो कि गोल्फस्क्रिप्ट में एक क्वीन है।

मुझे यकीन नहीं है कि सीजेएम को गोल्फस्क्रिप्ट का एक मामूली व्युत्पन्न माना जाना चाहिए। लेकिन मुझे लगता है कि वे काफी अलग हैं और कम से कम तुच्छ नहीं हैं।

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