तीसरा ऑर्डर क्वीन लिखिए


17

यह चुनौती ' गोल्फ ए म्युचुअल क्वीन ' का विस्तार है।

अपनी पसंद की तीन भाषाओं का उपयोग करके, एक तीसरा ऑर्डर ऑरोबोरोस प्रोग्राम बनाएं ।

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

A, B और C में कोई भी दो भाषाएं समान या एक दूसरे के सबसेट या सुपरसेट नहीं हो सकती हैं। कोई भी पीए, पीबी या पीसी समान नहीं हो सकता है।

उदाहरण के लिए, एक हास्केल कार्यक्रम एक पर्ल प्रोग्राम को आउटपुट करता है जो एक जावा प्रोग्राम को आउटपुट करता है जो मूल हास्केल प्रोग्राम को आउटपुट करता है जो मान्य होगा।

दूसरी ओर, एक C # 4 प्रोग्राम जो C # 3 प्रोग्राम को आउटपुट करता है जो C # 2 प्रोग्राम को आउटपुट करता है वह अमान्य है। यहां तक ​​कि एक पर्ल -> रूबी -> बैश संयोजन अमान्य होगा यदि, कहें, पर्ल कार्यक्रम और रूबी कार्यक्रम समान थे।

यह कोड गोल्फ है, इसलिए सबसे छोटा प्रोग्राम पीए जीतता है।


जवाबों:


21

पायथन -> पर्ल -> रूबी, 48 वर्ण

मेरे पिछले उत्तर का अनुकूलन । चल रहा है

s='print q<puts %%q{s=%r;print s%%s}>';print s%s

पायथन के साथ यह पर्ल स्निपेट उत्पन्न करता है

print q<puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}>

जो निम्नलिखित रूबी कोड उत्पन्न करता है

puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}

जो फिर मूल पायथन स्निपेट को प्रिंट करता है:

diff -s <(ruby <(perl <(python thirdorderquine.py))) thirdorderquine.py 
Files /dev/fd/63 and thirdorderquine.py are identical

13

पर्ल -> PHP -> HTML + जावास्क्रिप्ट, 105 वर्ण

मैं भाषाओं की श्रृंखला को किसी तरह सार्थक बनाना चाहता था, इसलिए मुझे लगा कि मैं एक PHP स्क्रिप्ट लिखूंगा जो जावास्क्रिप्ट युक्त एक HTML पृष्ठ उत्पन्न करता है। तीसरी भाषा के लिए मैंने पर्ल को चुना, सिर्फ इसलिए कि मुझे पर्ल पसंद है। :)

कुछ लोग इस चार भाषाओं पर विचार कर सकते हैं, लेकिन मैं वास्तव में HTML को जावास्क्रिप्ट के रूप में यहाँ से अलग नहीं मानता - यह एक मार्कअप भाषा है, न कि प्रोग्रामिंग भाषा। वैसे भी, यहाँ तीन संस्करण हैं:

पर्ल (105 वर्ण):

printf+(q(<script>alert(unescape("<?=urlencode(<<<E%sprintf+(q(%s),$/)x2,$/%sE%s)?>"))</script>),$/)x2,$/

PHP (165 वर्ण):

<script>alert(unescape("<?=urlencode(<<<E
printf+(q(<script>alert(unescape("<?=urlencode(<<<E%sprintf+(q(%s),$/)x2,$/%sE%s)?>"))</script>),$/)x2,$/
E
)?>"))</script>

HTML + जावास्क्रिप्ट (235 वर्ण):

<script>alert(unescape("printf%2B%28q%28%3Cscript%3Ealert%28unescape%28%22%3C%3F%3Durlencode%28%3C%3C%3CE%25sprintf%2B%28q%28%25s%29%2C%24%2F%29x2%2C%24%2F%25sE%25s%29%3F%3E%22%29%29%3C%2Fscript%3E%29%2C%24%2F%29x2%2C%24%2F"))</script>

(Ps। हाँ, मुझे पता है कि मैं PHP के कदम को लगभग शून्य बना सकता था, उदाहरण के लिए बस पर्ल में HTML + JS कोड जनरेट करना और उसे जोड़ना <?php, लेकिन यह बहुत धोखा देने जैसा लगा। इस समाधान में, कोड वास्तव में है। पीएचपी में संसाधित होने के बजाय बस वर्बेटिम की नकल की जाती है।)


3

अंडरलोड → सेड → पेरल, 23 ​​बाइट्स

शायद भाषाओं के बेहतर विकल्पों के साथ इसे कम किया जा सकता है। तर्कहीन होने के कारण तर्क "नियम के रूप में" सेड कार्यक्रम एक खाली लाइन ले सकते हैं "प्रतियोगिता को स्थगित करता है।

अंडरलोड कार्यक्रम:

((iprint+q)Sa(:^)*aS):^

sed कार्यक्रम उत्पन्न करता है:

iprint+q(((iprint+q)Sa(:^)*aS):^)

जो पर्ल प्रोग्राम उत्पन्न करता है:

+ क्ष प्रिंट (((+ क्ष प्रिंट) सा (: ^) * के रूप में): ^)


(ध्यान दें: यहां दो अनुगामी न्यूलाइन्स हैं), जो मूल अंडरलोड प्रोग्राम को फिर से उत्पन्न करता है:

((iprint+q)Sa(:^)*aS):^

यहां मुख्य उद्देश्य उन भाषाओं को ढूंढना है जिनमें तार घोंसले के शिकार होते हैं (यानी आप इसे बचने के बजाय इसे सीमांकक में संलग्न करके एक स्ट्रिंग उद्धृत कर सकते हैं); अंडरलोड है (), पर्ल के पास है q(), और सीड में एक स्ट्रिंग व्हाट्सएप तक जारी रहती है (जो कि प्रोग्राम में कोई व्हाट्सएप नहीं होने पर निहित है)। वहाँ शायद एक एसोलैंग या गोल्फिंग भाषा है, जिसमें "वर्तमान लाइन के बाकी हिस्सों को प्रिंट करें, उसके बाद न्यूलाइंस" का निर्देश नहीं है, जो यहां आदर्श होगा, लेकिन मैंने एक तलाश में इतना समय नहीं बिताया है; आप उस मामले में निर्देश की लंबाई 8 बाइट घटा सकते हैं। (जेली लगभग काम करती है लेकिन इसका निर्देश खुद को उद्धृत नहीं करता है। इसके अलावा, यह चुनौती को स्थगित करता है।)

आप इसे 22 बाइट्स तक घटा सकते हैं :

((Csay + क्यू) सा (: ^) * के रूप में): ^

(एक अनुगामी न्यूलाइन के साथ, एक नियमित पाठ फ़ाइल की तरह, शून्य के बजाय जो आप सामान्य रूप से गोल्फ में प्राप्त करते हैं)। हालाँकि, इसके लिए अंडरलोड दुभाषिया की आवश्यकता होती है, जो कि नई लाइन को नो-ऑप के रूप में मानने के साथ ठीक है। यह ऑनलाइन की कोशिश करो! '

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