मिरर क्वीन (या मेरा सिर दर्द होता है)


32

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

रिवर्स क्वीन चैलेंज से सभी नियम और स्कोरिंग लागू होते हैं, इसलिए इस प्रश्न के सभी उत्तर एक (लेकिन साथ ही स्कोर नहीं) का जवाब देंगे।

संपादित करें:

अनुरोध से, सभी नियम अब यहां कॉपी किए गए हैं।

नियम:

  • एक प्रोग्राम पी लिखिए जो निष्पादित होने पर आउटपुट पी 'पैदा करता है जहां पी' पीछे की ओर पी है और जब निष्पादित पी उत्पन्न करता है।
  • अन्य फ़ाइलों का उपयोग नहीं (उदाहरण के लिए reverse.txt)
  • न्यूनतम कोड की लंबाई दो वर्ण है।
  • आपका कार्यक्रम कोई ख़ास नहीं हो सकता।

स्कोरिंग:

  • +50 यदि आप इंटरनेट से पुल डेटा का उपयोग करते हैं।
  • यदि आप अपने स्वयं के स्रोत कोड को पढ़ते हैं तो।
  • प्रति वर्ण +1 अंक।
  • सबसे कम स्कोर जीतता है।

eval(eval(eval(eval(eval(eval(eval(eval(eval(p)))))))))
एंड्रयू लार्सन

मैं सिर्फ इतना कह रहा हूं कि आप [...] के आउटपुट को निष्पादित करने के आउटपुट को निष्पादित करने में सक्षम होंगे [...] पी के आउटपुट को निष्पादित कर रहा है (पीछे की ओर के अलावा किसी भी क्वीन के समान)।
एंड्रयू लार्सन

@AndrewLarsson वास्तव में हालांकि अवधारणा का प्रमाण मैं पी का निर्माण कर रहा हूं सी और पी 'पर्ल में लिखा जाएगा।
hildred

ओह, यह अच्छा होगा!
एंड्रयू लार्सन

1
हाँ, बहुत देर हो चुकी है। नकल नहीं।
जोहान्स कुह्न

जवाबों:


22

GolfScript, 46 वर्ण

0{`".~#"+.-1%+\.!@@}.~##~.}@@!.\+%1-.+"#~."`{1

ठीक है, यह बदसूरत है, लेकिन यह काम करता है। आउटपुट कोड उलट के बराबर होता है, और एक मान्य गोल्फस्क्रिप्ट प्रोग्राम भी है जो मूल कोड को फिर से आउटपुट करता है।

ठीक है, मुझे यह समझाने की कोशिश करें कि मैंने इसका निर्माण कैसे किया। सबसे पहले, मैंने क्वीन से शुरुआत की {".~"}.~, और इसे इस रूप में संशोधित किया कि खुद को उलट दें। आउटपुट को अपने आप में एक निष्पादन योग्य क्वीन बनाने के लिए, मैंने इसे उलटने से पहले कोड की एक प्रति बनाई, और #कोड के अंत में शामिल किया, ताकि अंत में उलटा संस्करण सिर्फ एक टिप्पणी बन जाए। इस प्रकार, हमें पैलंड्रोमिक क्वीन मिलता है:

{`".~#"+.-1%}.~##~.}%1-.+"#~."`{

हालांकि, नियमों से, पैलिन्ड्रोम की अनुमति नहीं है, इसलिए मुझे किसी तरह समरूपता को तोड़ने की आवश्यकता थी। मैं समझ सबसे आसान तरीका है एक शामिल करने के लिए किया जाएगा 0कोड में (जो, अपने आप में, GolfScript में एक Quine है) और करने के लिए यह फ्लिप 1के साथ !उलट प्रतिलिपि बनाने के बाद। शेष जटिलता के अधिकांश सही क्रम में सब कुछ पाने के लिए सिर्फ बदसूरत स्टैक हेरफेर है।


क्या यह उलट-पुलट होने पर भी गोल्फ की है या यह दूसरी भाषा है?
hildred

हाँ, यह दोनों तरीके से गोल्फस्क्रिप्ट है। दरअसल, के अलावा 0और 1शुरुआत और अंत में, कोड के बाकी विलोमपद।
इल्मरी करोनें

9
वाह। ठीक है, मैं अब इस एसई के लिए पर्याप्त स्मार्ट महसूस नहीं करता हूं :(
Cruncher

21

पर्ल और सी 6478 1955

#!/usr/bin/perl -i//
$_=<<'rahc';eval $_; #//
print scalar reverse "#!/usr/bin/perl -i//\n\$_=<<'rahc';eval \$_; #//\n${_}rahc\n" #//
__END__
__END__ enifed#
};)"{ = ][cn\rahcn\n\"(p
};)'n\'( rahctup) 1 == 21%b ( fi
;)d(p;)]1-b[c,",d%",)d(foezis,d( ftnirpns{)b--;b;)c(foezis=b( rof
;)c(p;]9[d rahc;b tni{)(niam diov
}};)]1-b[c(rahctup )]1-b[c(fi{)b--;b;)c(nelrts=b(rof;b tni{)c*rahc(p diov
>h.gnirts< edulcni#
>h.oidts< edulcni#
;}
,0
,53,33,74,711,511,411,74,89,501,011,74,211
,101,411,801,23,54,501,74,74,01,63,59,16
,06,06,93,411,79,401,99,93,95,101,811,79
,801,23,63,59,95,23,53,74,74,01,211,411
,501,011,611,23,511,99,79,801,79,411,23,411
,101,811,101,411,511,101,23,43,53,33,74,711
,511,411,74,89,501,011,74,211,101,411,801,23
,54,501,74,74,29,011,29,63,59,16,06,06
,93,411,79,401,99,93,95,101,811,79,801,23
,29,63,59,95,23,53,74,74,29,011,63,321
,59,521,411,79,401,99,29,011,43,23,53,74
,74,01,59,59,96,87,86,59,59,01,59,59
,96,87,86,59,59,23,101,011,501,201,101,001
,53,01,521,95,14,43,321,23,16,23,39,19
,99,011,29,411,79,401,99,011,29,011,29,43
,04,211,01,521,95,14,93,011,29,93,04,23
,411,79,401,99,611,711,211,14,23,94,23,16
,16,23,05,94,73,89,23,04,23,201,501,01
,95,14,001,04,211,95,14,39,94,54,89,19
,99,44,43,44,001,73,43,44,14,001,04,201
,111,101,221,501,511,44,001,04,23,201,611,011
,501,411,211,011,511,321,14,89,54,54,95,89
,95,14,99,04,201,111,101,221,501,511,16,89
,04,23,411,111,201,01,95,14,99,04,211,95
,39,75,19,001,23,411,79,401,99,95,89,23
,611,011,501,321,14,04,011,501,79,901,23,001
,501,111,811,01,521,521,95,14,39,94,54,89
,19,99,04,411,79,401,99,611,711,211,23,14
,39,94,54,89,19,99,04,201,501,321,14,89
,54,54,95,89,95,14,99,04,011,101,801,411
,611,511,16,89,04,411,111,201,95,89,23,611
,011,501,321,14,99,24,411,79,401,99,04,211
,23,001,501,111,811,01,26,401,64,301,011,501
,411,611,511,06,23,101,001,711,801,99,011,501
,53,01,26,401,64,111,501,001,611,511,06,23
,101,001,711,801,99,011,501,53,01,95,521,01
{ = ][c
rahc

संपादित करें:

संक्षिप्त विवरण: perl से दो दिलचस्प लाइनें दूसरी और तीसरी हैं। दूसरी पंक्ति में दो कथन हैं, जिनमें से पहला दस्तावेज़ के बाकी हिस्सों को एक स्ट्रिंग में पढ़ता है। दूसरे में स्ट्रिंग है। तीसरी पंक्ति सब कुछ पीछे की ओर प्रिंट करती है। हर बात को नजरअंदाज कर दिया जाता है। सी साइड से आपके पास एक एरे है जिसमें एक स्ट्रिंग के रूप में प्रोग्राम है, जो एक ऐरे और एक स्ट्रिंग के रूप में प्रिंट हो जाता है, और बाकी एक टिप्पणी है।


1
वाट। : ओ मेरा सिर फट गया। लेकिन मुझे लगता है कि में 6536 वर्ण गिनती ...
दरवाज़े

क्या ... कैसे ... 0_0
द हेट के साथ लड़का

@DoorknobofSnow मैंने गलत संस्करण को गिना। लेकिन यहाँ एक छोटा संस्करण है।
hildred

बहुत शानदार! मुझे लगता है कि हास्केल / सी एक और संभव संयोजन हो सकता है।
Theonlygusti

@Theonlygusti, अगर आप इसे पोस्ट करते हैं और मैं इसे संकलित कर सकता हूं, तो मैं इसे बढ़ा दूंगा।
हल्दी

8

रूबी 145

DATA.read.tap {| a। Areverse, a.tr ("\ x79 \ x59", "\ x59 \ x79")} डालता है
: y
__समाप्त__
__DNE__
Y:
}) "97x \ 95x \", "95x \ 97x \" (rt.a, esrere.a बेवकूफ | एक {pat.daer.ATAD)

मुख्य विचार सरल है: बस स्रोत कोड के पहले आधे हिस्से को पीछे की ओर रखें, __END__जिसके बाद DATAरूबी का उपयोग करके पढ़ा जा सकता है । फिर बस इस डेटा के रिवर्स को प्रिंट करें, फिर डेटा प्रिंट करें, और आपको मूल स्रोत कोड वापस मिलता है

समस्या यह है, कि यह एक पैलिंड्रोम बन जाता है (ध्यान दें कि पहली पंक्ति को एक एंडलाइन की आवश्यकता है), इसलिए हमें समरूपता को तोड़ना होगा। मैंने बस :yकोड में एक प्रतीक जोड़ा है , और कुछ कोड जो इस प्रतीक को लोअरकेस और अपरकेस के बीच रनों के बीच बदल देगा, जिससे दो रनों के बाद मूल स्थिति में बदल जाएगा।

परीक्षण एक: उन्हें निष्पादित किया जा सकता है

$ ruby rq2.rb > rq2t.rb
$ ruby rq2t.rb > rq2tt.rb

टेस्ट दो: दो रनों का परिणाम मूल स्रोत लौटाएगा

$ diff rq2.rb rq2tt.rb
$

टेस्ट तीन: कोड एक पैलिंड्रोम नहीं है (मध्य रन अलग है)

$ diff rq2.rb rq2t.rb
3c3
< :y
---
> :Y
6c6
< Y:
---
> y:

4

> <>, 21 19 बाइट्स

'rd3*70.r l?!;o90.<

यहाँ कोशिश करो!

सुविधा के लिए *> <> दुभाषिया का उपयोग करता है, लेकिन यह वैध है> <> कोड।


यदि बाहर की अनुमति है, तो यह 16 बाइट्स में किया जा सकता है:

'd3*}70.!r  !|o|

यहाँ कोशिश करो!


@JoKing धन्यवाद! यह सुबह 7 बजे था और मैं बस इतना थक गया था कि एक साथ डाल दिया। मैं इसे एक दो घंटे में संपादित करूँगा।
डिस्कोर्डियन

4

गोल> <> , 11 बाइट्स

":5-}H}+5:'

एक पूरी बाइट कटी हुई! यह लगभग एक पैलिंड्रोम है, लेकिन तकनीकी रूप से '+' और '-' के कारण नहीं है, हाहा!

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

नीचे दिए गए दो काम नहीं करते हैं, या कम से कम वे चुनौती के विनिर्देशों को पूरा नहीं करते हैं, लेकिन ऊपर दिए गए कोड को करता है।

थोड़ा युवा संस्करण, 12 बाइट्स

"r2ssrH}+5:'

बस एक बाइट से गोल्फ, दोहरे भाव का उपयोग करके और इसे 5 से बढ़ाकर! और यह नया संस्करण पैलिंड्रोम की तरह कम दिखता है।

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

पुराने संस्करण, 13 बाइट्स

"r2ssrHrss7r'

पिछले के साथ एक समस्या थी जो जोकिंग ने बताया, इसके लिए धन्यवाद, अब यह काम करता है, लेकिन 4 बाइट्स की कीमत के साथ ...

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


1

मदद, WarDoq! (27 बाइट्स)

स्रोत कोड पढ़ने के कारण 25 बाइट्स जोड़े गए।

<space>q

यह कैसे काम करता है:
<space>- एक टिप्पणी जो गैर-अंतरिक्ष चरित्र पर समाप्त होती है
q- प्रिंट स्रोत कोड उलट (क्यू "स्पेस")

उलट:

q<space>

यह कैसे काम करता है:
q- प्रिंट स्रोत कोड उलट (अब के लिए q)
<space>- एक टिप्पणी जो गैर-अंतरिक्ष चरित्र पर समाप्त होती है, और q कमांड की शुरुआत के लिए एक चरित्र जोड़ें ("स्पेस" क्यू बना रही है)

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