पीछे की ओर और आगे की ओर पॉलीग्लॉट क्वीन!


9

आपको एक पॉलीग्लॉट बनाना होगा जो एक भाषा में इसके स्रोत कोड और दूसरे में इसके स्रोत कोड को पीछे करता है। सामान्य नियमों के विपरीत, आपको वर्तमान फ़ाइल पढ़ने या अपने प्रस्तुत करने का स्रोत कोड प्राप्त करने और एक भाषा में रिवर्स करने के लिए एक बिलिन का उपयोग करने की अनुमति है। आपका स्रोत कोड एक palindrome नहीं हो सकता है।

उदाहरण के लिए, यदि आपका स्रोत कोड है abcxyz, तो उसे abcxyzएक भाषा में और zyxcbaदूसरे में आउटपुट होना चाहिए । यदि आपका कोड है abcxyzyxbca, तो यह अमान्य है क्योंकि यह एक palindrome है।

सौभाग्य!


3
एक कारण के लिए सामान्य नियम हैं। बिल्टइन क्वाइन बिल्ट-इन संभवतः इस चुनौती को भी व्यापक बना देगा, और palindrome सोर्स कोड की अनुमति देता है, जो दोनों भाषाओं के लिए आगे के क्वीन हैं।
एरिक आउटोलॉफ़र

@EriktheOutgolfer palindromes को अब अनुमति नहीं है।
प्रोग्रामर

1
@EriktheOutgolfer आह, तो स्रोत कोड एक palindrome नहीं हो सकता है?
लुइस मेंडो

2
मुझे लगता है कि आपको पहले व्यक्ति के लिए इस चुनौती को पूरा करने के लिए सामान्य क्वीन नियमों को तोड़े बिना एक इनाम की पेशकश करनी चाहिए। (शायद ५० प्रतिनिधि?)
क्लिमिक

1
मैं "एक भाषा में" पढ़ता हूं क्योंकि यह स्पष्ट रूप से उस मामले को अस्वीकार कर रहा है जहां दोनों भाषाएँ स्रोत कोड पढ़ती हैं, लेकिन वर्तमान शीर्ष मतदान का उत्तर बिल्कुल यही है। क्या आप इसे स्पष्ट करने के लिए संपादित कर सकते हैं कि क्या इसका मतलब अनुमति देना है?
hvd

जवाबों:


5

PHP और GolfScript, 2 बाइट्स

1

अर्थात एक नई रेखा और 1 अंक।

इस में एक रिवर्स Quine है GolfScript , इस साइट पर योगदान द्वारा जस्टिन । PHP ने ट्रिगर नहीं किया है कि यह एक प्रोग्रामिंग भाषा है इसलिए यह अपने इनपुट को प्रिंट करता है।


6

पायथन 2 / पायथन 3, 71 बाइट्स

lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]

किसी भी क्वीन बिल्डिंस का उपयोग नहीं करता है।

आम तौर पर मुझे जगाने के लिए ओवर्स का धन्यवाद।


lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]71 बाइट्स के लिए
ओवर्स

@ ओह, बेशक, मैंने ऐसा कैसे नहीं सोचा।
आउटगोल्फर

6

बैच / बैश + टैक, 39 बाइट्स

:;tac -r -s '.\|'$'\n' $0;exit
@type %0

बैच में आगे की ओर आउटपुट। स्पष्टीकरण: बैच पहली पंक्ति को एक लेबल के रूप में देखता है और इसे अनदेखा करता है, जबकि दूसरी पंक्ति बस स्रोत फ़ाइल को STDOUT में कॉपी करती है। (ध्यान दें कि आपको एक्सटेंशन सहित फ़ाइल को इनवोक करना होगा या बदलना %0होगा %~f0।) bashचार कमांड देखता है:

  • :कुछ भी नहीं (जैसा ही true)
  • tac -r -s '.\|'$'\n' $0
    • -rtacरेगेक्स मोड में डालता है
    • -s एक रेगेक्स निर्दिष्ट करता है
    • '.\|'$'\n' रेगेक्स, से बना है
      • . न्यूलाइन को छोड़कर कोई भी चरित्र
      • \| या
      • $'\n' एक नई पंक्ति
    • अपशॉट यह है कि tacफ़ाइल को लाइनों के बजाय वर्णों में विभाजित करता है।
  • exit चौथे आदेश की अनदेखी करते हुए स्क्रिप्ट को रोक दिया
  • @type %0 (अवहेलना करना)

मुझे लगता है कि आप पहली पंक्ति को बदल सकते हैं :;rev $0|tac;exit। इसके अलावा, हेडर को इसके बजाय बैच / श + उपयोग-लिनक्स + कोरुटिल्स कहना चाहिए ।
आउटगोल्फर

@EriktheOutgolfer $'\n'एक बैशिज़्म है, rev $0|tacनई कहानियों को सही ढंग से उलट नहीं करता है, और क्या यह वास्तव में मायने रखता है जो tacपैकेज में आता है?
नील

$'\n'मेरे द्वारा सुझाए गए प्रतिस्थापन में मौजूद नहीं है, और rev $0|tacमेरे लिए काम करता है। और मुझे लगता है कि व्यक्तिगत उपयोगिताओं के बजाय पैकेज को निर्दिष्ट करना बेहतर है, क्योंकि कभी-कभी भ्रम पैदा हो सकता है (जैसे कि कौन सा पैकेज है tac?)।
एरिक आउटगोल्फर

@EriktheOutgolfer इसे ऑनलाइन आज़माएं! गलत है। तो इसे ऑनलाइन आज़माएं! (लेकिन अधिक सूक्ष्मता से)।
नील

क्या आप कृपया स्पष्टीकरण दे सकते हैं?
प्रोग्रामर

3

PHP और रेटिना, 2 बाइट्स

1

Gille के PHP और GolfScript के उत्तर के समान है।

PHP बस कोड को पढ़ता है और इसे सीधे आउटपुट करता है, रेटिना इनपुट में एक खाली स्ट्रिंग के मैचों को बदल देगा और इसे 1 से बदल देगा, और आउटपुट को एक नई रेखा के साथ।


2

JS (ES5), JS (ES6), 94 बाइट्स

function f(){try{eval("x=(f+'f()').split``.reverse().join``")}catch(e){x=f+"f()"};return x}f()

किसी भी निर्मित बिल्ट-इन का उपयोग नहीं करता है। बस इस तथ्य का उपयोग करता है कि जेएस फ़ंक्शंस उनके कोड को सख्त करते हैं। शायद अधिक गोल्फ हो सकता है।


1

यदि आप स्रोत कोड को पढ़ने की अनुमति देते हैं, तो यह वास्तव में एक क्वीन नहीं है।

PHP और श + उपयोग-लिनक्स, 6 बाइट्स

rev $0

मुझे यकीन है कि सामान्य गोल्फिंग भाषाएँ इसे 2 बाइट्स में कर सकती हैं।


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