एक पलिंड्रोम-पॉलीग्लॉट-क्वीन लिखें


25

एक कार्यक्रम के एक है: एक "palipolyquine" लिखें Quine , एक बहुभाषी , और एक विलोमपद

नियम:

  • पॉलीग्लॉट भाषाओं की संख्या कोड आकार से अधिक बेहतर है।
  • एक टाई के मामले में सबसे छोटा जवाब (बाइट्स में) जीतता है।
  • Polyglot और Quine के नियम यहां देखें: एक Polyquine लिखें

मेरा उदाहरण (मेरे पास परीक्षणों के साथ एक भंडारित अजीब स्रोत है ):

सी # / जावा (1747 बाइट्स):

/**///\u000A\u002F\u002A
using System;//\u002A\u002F
class Program{public static void//\u000A\u002F\u002A
Main//\u002A\u002Fmain
(String[]z){String s="`**?`@#_^using System;?_#^class Program{public static void?@#_^Main?_#main^(String[]z){String s=!$!,t=s;int i;int[]a=new int[]{33,94,38,64,35,95,96,63,36};String[]b=new String[]{!&!!,!&n!,!&&!,!&@!,!&#!,!&_!,!`!,!?!,s};for(i=0;i<9;i++)t=t.?@#_^Replace?_#replace^(!!+(char)a[i],b[i]);t+='*';for(i=872;i>=0;i--)t=t+t?@#_^[i];Console.Write?_#.charAt(i);System.out.printf^(t);}}/",t=s;int i;int[]a=new int[]{33,94,38,64,35,95,96,63,36};String[]b=new String[]{"\"","\n","\\","\\u000A","\\u002F","\\u002A","/","//",s};for(i=0;i<9;i++)t=t.//\u000A\u002F\u002A
Replace//\u002A\u002Freplace
(""+(char)a[i],b[i]);t+='*';for(i=872;i>=0;i--)t=t+t//\u000A\u002F\u002A
[i];Console.Write//\u002A\u002F.charAt(i);System.out.printf
(t);}}/*/}};)t(
ftnirp.tuo.metsyS;)i(tArahc.F200u\A200u\//etirW.elosnoC;]i[
A200u\F200u\A000u\//t+t=t)--i;0=>i;278=i(rof;'*'=+t;)]i[b,]i[a)rahc(+""(
ecalperF200u\A200u\//ecalpeR
A200u\F200u\A000u\//.t=t)++i;9<i;0=i(rof;}s,"//","/","A200u\\","F200u\\","A000u\\","\\","n\",""\"{][gnirtS wen=b][gnirtS;}63,36,69,59,53,46,83,49,33{][tni wen=a][tni;i tni;s=t,"/}};)t(^ftnirp.tuo.metsyS;)i(tArahc.#_?etirW.elosnoC;]i[^_#@?t+t=t)--i;0=>i;278=i(rof;'*'=+t;)]i[b,]i[a)rahc(+!!(^ecalper#_?ecalpeR^_#@?.t=t)++i;9<i;0=i(rof;}s,!?!,!`!,!_&!,!#&!,!@&!,!&&!,!n&!,!!&!{][gnirtS wen=b][gnirtS;}63,36,69,59,53,46,83,49,33{][tni wen=a][tni;i tni;s=t,!$!=s gnirtS{)z][gnirtS(^niam#_?niaM^_#@?diov citats cilbup{margorP ssalc^#_?;metsyS gnisu^_#@`?**`"=s gnirtS{)z][gnirtS(
niamF200u\A200u\//niaM
A200u\F200u\A000u\//diov citats cilbup{margorP ssalc
F200u\A200u\//;metsyS gnisu
A200u\F200u\A000u\///**/

संकलन ideone.com पर उपलब्ध है: C # , जावा


2
क्या पाली-क्वीन बनाने में कोई नियम शामिल हैं? कोई सीमाएं? यदि यह सवाल जैसा है, तो एक संभावित (तुच्छ) समाधान है 1(जो 1यहां कई भाषाओं में आउटपुट करेगा , और पैलिंड्रोमिक है)।
क्लिस्सिक

मैंने और औपचारिक नियम जोड़े।
इवान कोचूरिन

2
आह कूल। खैर, आपकी पहली चुनौती पर शुभकामनाएँ! हालांकि कुछ और बातें: आपको वास्तव में वहां कोड ब्लॉक की आवश्यकता नहीं है, और आपको शायद यहां से अन्य चुनौती से नियमों को स्थानांतरित करना चाहिए।
11

1
क्या 5-भाषा, 999-बाइट उत्तर ने 4-भाषा, 100-बाइट उत्तर को हराया है?
ETHproductions

@ETHproductions, मुझे लगता है हाँ। लाइनों की संख्या कम करने की तुलना में नई भाषा जोड़ना कठिन है।
इवान कोचुरिन

जवाबों:


14

CJam / GolfScript , 2 भाषाएँ, 50 बाइट्स

{`"0$~e#"+0$-1%"":n}0$~e##e~$0}n:""%1-$0+"#e~$0"`{

इसे आज़माइए CJam! इसे गोल्फस्क्रिप्ट में आज़माएं!

हुह, यह आश्चर्यजनक रूप से लंबे समय तक अनुत्तरित रहा।

व्याख्या

संभवतः यह समझाना आसान है कि मैंने यह दिखाया कि कैसे मैंने प्रत्येक भाषा में मूल quine को एक palindromic polyglot quine में बदल दिया।

तो दोनों भाषाओं में मूल quines हैं:

{".~"}.~

{"_~"}_~

क्रमशः गोल्फस्क्रिप्ट और सीजेएम में। ये इस तथ्य के लिए काफी समान हैं कि सीजेएम मूल रूप से गोल्फस्क्रिप्ट से प्रेरित था (लेकिन तब से काफी विचलित हो गया है)। पहला अंतर जो हम देखते हैं, वह यह है कि एक .स्टैक के शीर्ष को डुप्लिकेट करने के लिए उपयोग करता है और दूसरा उपयोग करता है _। इस समस्या से बचने के लिए एक आम ट्रिक का उपयोग करना है 0$, क्योंकि दोनों भाषाओं में "कॉपी-एनटी-आइटम-ऑन-स्टैक" ऑपरेटर है $। तो हम प्राप्त करते हैं {"0$~"}0$~, हालांकि अभी भी गोल्फस्क्रिप्ट में एक पीछे चलने वाले लाइनफीड की आवश्यकता है। लेकिन चलो अंत में इसके बारे में चिंता करते हैं।

सबसे पहले, हमें इसे एक तालमेल बनाने की आवश्यकता है। इसका स्पष्ट समाधान यह है कि किसी टिप्पणी को जोड़ा जाए और स्रोत कोड को रिवर्स में रखा जाए। यह काफी सरल है, क्योंकि CJam e#टिप्पणियों के लिए उपयोग करता है, और GolfScript eमें कुछ भी नहीं करता है, और #एक टिप्पणी है। तो अगर हम e#...दोनों भाषाओं के लिए काम करते हैं। यहाँ हमें क्या मिला है:

{"0$~"}0$~e##e~$0}"~$0"{

बेशक, यह वास्तव में आगे से भाग को प्रिंट नहीं करता है e#। हम इसे आसानी से स्रोत कोड से ही फिर से बना सकते हैं। दोनों भाषाएँ प्रारंभिक ब्लॉक को एक स्ट्रिंग में बदल सकती हैं `और उस "0$~"हिस्से को जोड़ सकती हैं +, जिससे हमें एक ही स्ट्रिंग में संपूर्ण अनमीर्ड सोर्स कोड मिल जाता है। एक मिरर की गई कॉपी को जोड़ने के लिए, हम सभी को 0$फिर से स्ट्रिंग को डुप्लिकेट करने की आवश्यकता है और फिर इसके साथ रिवर्स करें -1%, जो दोनों भाषाओं में भी काम करता है। तो अब हमें यह मिल गया है:

{`"0$~e#"+0$-1%}0$~e##e~$0}%1-$0+"#e~$0"`{

यह सीजेएम में एक वैध पैलिन्डोमिक क्वीन है, और यह गोल्फस्क्रिप्ट में भी काम करता है, लेकिन फिर भी पेस्की ट्रेलिंग लाइनफीड को प्रिंट करता है।

इसे रोकने का सामान्य तरीका यह है कि खाली स्ट्रिंग को असाइन किया जाए n, क्योंकि जो वास्तव में गोल्फस्क्रिप्ट करता है nवह अंत में सामग्री को प्रिंट करता है । तो हमें क्या चाहिए "":n। तो CJam के बारे में क्या? शुक्र है, यह कुछ भी नहीं करता है। ""एक खाली स्ट्रिंग (या खाली सूची है, वे CJam में एक ही बात कर रहे हैं), और सूची :पर ऑपरेटर n(लाइनफ़ीड के साथ प्रिंट) को मैप करते हैं । लेकिन सूची खाली होने के बाद, इस पर एक ऑपरेटर को मैप करने से कुछ भी नहीं होता है। इसलिए, हम सीजेएम के साथ खिलवाड़ किए बिना, लाइनफीड से छुटकारा पा सकते हैं, और अंतिम समाधान के साथ समाप्त हो सकते हैं:

{`"0$~e#"+0$-1%"":n}0$~e##e~$0}n:""%1-$0+"#e~$0"`{

5

पर्ल 5 / रूबी / पीएचपी / जावास्क्रिप्ट (ब्राउज़र), 4 भाषाएँ, 513 बाइट्स

$_='$z=0?"$&".next: eval("printf=console.log;atob`JCc`");printf("%s_=%s%s%s;eval(%s_);//#//;)_%s(lave;%s%s%s=_%s",$d=$z[0]||h^L,$q=$z[1]||h^O,$_,$q,$d,$d,$q,"0"?$_.split("").reverse().join(""):~~reverse,$q,$d)';eval($_);//#//;)_$(lave;')d$,q$,esrever~~:)""(nioj.)(esrever.)""(tilps._$?"0",q$,d$,d$,q$,_$,O^h||]1[z$=q$,L^h||]0[z$=d$,"s%_=s%s%s%;eval(s%_);//#//;)_s%(lave;s%s%s%=_s%"(ftnirp;)"`cCJ`bota;gol.elosnoc=ftnirp"(lave :txen."&$"?0=z$'=_$

ऑनलाइन पर्ल की कोशिश करो!
इसे ऑनलाइन आज़माएं!
PHP ऑनलाइन कोशिश करो!
इसे ऑनलाइन मान्य करें!

$_='$z=0?"$&".next: eval("printf=console.log;atob`JCc`");printf("%s_=%s%s%s;eval(%s_);//#//;)_%s(lave;%s%s%s=_%s",$d=$z[0]||h^L,$q=$z[1]||h^O,$_,$q,$d,$d,$q,"0"?$_.split("").reverse().join(""):~~reverse,$q,$d)';eval($_);//#//;)_$(lave;')d$,q$,esrever~~:)""(nioj.)(esrever.)""(tilps._$?"0",q$,d$,d$,q$,_$,O^h||]1[z$=q$,L^h||]0[z$=d$,"s%_=s%s%s%;eval(s%_);//#//;)_s%(lave;s%s%s%=_s%"(ftnirp;)"`cCJ`bota;gol.elosnoc=ftnirp"(lave :txen."&$"?0=z$'=_$

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