द्विदिश क्वाइन चेन


9

PPCG के पास पहले से ही पर्याप्त मात्रा में खदान नहीं हैं ...

चुनौती:

आपका कार्य "A0" प्रोग्राम बनाना है। जब यह प्रोग्राम बिना इनपुट के चलाया जाता है, तो यह कुछ भी नहीं करता है। जब यह प्रोग्राम इनपुट के साथ चलाया जाता है, तो यह "A1" आउटपुट करता है। जब "A1" बिना किसी इनपुट के चलाया जाता है, तो यह "A0" आउटपुट करता है। जब "A1" इनपुट के साथ चलाया जाता है, तो यह "A2" आउटपुट करता है। बहुत ज्यादा, "ए (के)" इनपुट के साथ चलने पर "ए (के -1)" का उत्पादन करेगा, और इनपुट के साथ चलने पर "ए (के + 1)" का उत्पादन करेगा।

विवरण

मेरा मानना ​​है कि यह चुनौती काफी सरल है; वास्तव में कोई अन्य नियम नहीं हैं। हर प्रोग्राम में कम से कम 1 बाइट होनी चाहिए, वैसे। आप मान सकते हैं कि इनपुट में केवल ASCII वर्ण शामिल होंगे, और यदि आप चाहें तो व्हॉट्सएप को अनदेखा कर सकते हैं, लेकिन आप एक विशिष्ट इनपुट निर्दिष्ट नहीं कर सकते। आउटपुट या तो STDOUT या STDERR के लिए हो सकता है, लेकिन आपके सभी प्रोग्राम एक ही में आउटपुट होने चाहिए। दूसरे में पाठ भी हो सकता है (इसलिए आप STDOUT में आउटपुट कर सकते हैं और फिर एक त्रुटि के साथ बाहर निकल सकते हैं)। @Dennis को इस बात के लिए धन्यवाद।

सभी प्रोग्राम एक ही भाषा में होने चाहिए, और प्रत्येक प्रोग्राम को बाकी हिस्सों से अद्वितीय होना चाहिए।

स्कोर कार्यक्रम "ए 0" की लंबाई के बराबर है। जैसा कि यह एक कोड-गोल्फ चुनौती है, सबसे कम स्कोर जीतता है!


मुझे यह अनुमान लगाते हुए दुख हो रहा है कि अधिकांश सबमिशन में A (k) और A (k + 1) होंगे, एक ही चरित्र द्वारा अलग-अलग होने से एक बढ़ते हुए तार में जोड़ा जा सकता है :(
Sparr

@ शेप दुर्भाग्य से, शायद यही होने वाला है। :( ओह ठीक है, मैं समझ नहीं पा रहा हूँ कि उसके खिलाफ एक स्पष्ट नियम कैसे बनाया जा सकता है।
HyperNeutrino

यदि आप इसे सही ढंग से व्याख्या कर रहे हैं तो आप केवल दो में से किसी एक के लिए आउटपुट कर सकते हैं । यदि हम STDOUT को वांछित आउटपुट प्रिंट करते हैं, तो क्या STDERR को खाली करना है? क्योंकि यह एक त्रुटि के साथ बाहर निकलने के लिए udually अनुमति है।
डेनिस

क्या सभी कार्यक्रम अलग-अलग होने चाहिए? सवाल यह नहीं कहता है।

4
इसके अलावा, क्या मैं "बिडायरेक्शनल क्वीन चेन" जैसे कुछ अधिक अभिव्यंजक शीर्षक सुझा सकता हूं? "सुपर मेटा क्वीन" अन्य कार्यक्रमों को छापने वाले कार्यक्रमों से परे बहुत कुछ नहीं कहता है और भविष्य में इस चुनौती की खोज करना कठिन बना देगा।
मार्टिन एंडर

जवाबों:


1

पिप , 28 बाइट्स

V Y"I#qSti0+i?`V Y`.RPyRtiu"

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

व्याख्या

यह सबसे कम ज्ञात पिप क्वीन का संशोधित संस्करण है V Y"`V Y`.RPy"। यह एक स्ट्रिंग को परिभाषित करके, उसे yचर में घुमाते हुए , और फिर उसका मूल्यांकन करके काम करता है । जब मूल्यांकन किया जाता है, तो स्ट्रिंग y(इस प्रकार yडबल कोट्स के मूल्य को लपेटते हुए ) की पुनरावृत्ति लेती है और `V Y`इसके सामने पैटर्न शाब्दिक को समेटती है।

हमारी रणनीति एक डाल करने के लिए है 0इस कार्यक्रम में, फिर की जगह 0के साथ 10अगर कोई इनपुट था, या बदलने के 10साथ 0अगर कोई इनपुट था। (इस प्रकार, A ( k ) में k 1 से मिलकर एक संख्या होगी, जिसके बाद एक 0. होता है) 0और 10सुविधाजनक होता है क्योंकि उन मूल्यों के साथ अंतर्निहित चर ( iऔर t, क्रमशः) होते हैं, इसलिए हम वास्तविक अंकों का उपयोग किए बिना उनका उल्लेख कर सकते हैं। ।

इसलिए इसके बजाय RPy, हम चाहते हैं RP yRitकि इनपुट हो और RP yRtiनहीं तो। हम दो मामलों को जोड़ सकते हैं मानों की अदला-बदली करके tऔर iयदि इनपुट ( I#q Sti) है, तो कर रहे हैं RP yRti। (हमें परीक्षण करना है #q, इनपुट की लंबाई , क्योंकि इनपुट जैसे 0गलत हैं।)

अब हमें 0कोड में एक शाब्दिक प्राप्त करना है और A0 के विशेष मामले को संभालना है, जिसमें कोई आउटपुट नहीं है। यदि यह गलत है तो परीक्षण 0+iऔर वापसी दोनों को हल किया जा सकता है u:

  • किसी भी k > 0 के लिए, A ( k ) में संख्या नॉनज़रो होगी और इसलिए सत्य (उदा 110+i)।
  • के लिए कश्मीर = 0, ए (में नंबर कश्मीर ) शून्य हो जाएगा:
    • यदि इनपुट है, iऔर tस्वैप किया गया है और i10. 0+iअभी भी सत्य है।
    • यदि कोई इनपुट नहीं है, iतो अभी भी 0 है और 0+iगलत है। क्वीन कोर के बजाय, हम आउटपुट करते हैं u, जो नील के लिए एक अंतर्निर्मित चर है। मुद्रण नील कोई उत्पादन नहीं करता है।

बहुत बढ़िया! एक जादू की तरह काम करता है।
हाइपरन्यूट्रीनो

1

पायथन 2, 93 बाइट्स

एक अनुगामी लाइनफीड है।

p=1+2*bool(input())-1;s='print"p=%r+2*bool(input())-1;s=%r*(p>0);exec s"%(p,s)'*(p>0);exec s

इसे इनपुट के साथ आज़माएं | बिना इनपुट के इसे आजमाएं

यह एक समान प्रश्न पर मेरे उत्तर से संशोधित है ।

यदि इनपुट है, तो यह वृद्धि होगी p। तो जिसके परिणामस्वरूप कार्यक्रम होगा p=2+..., p=3+...आदि


यह इनपुट के रूप में 0 को नहीं पहचानता
fəˈnɛt Febk

@LliwTelracs इनपुट को उद्धरण चिह्नों में घेरना होगा (इसे स्टिंग करना होगा)। जवाब में हाइपरलिंक देखें।
mbomb007

जैसा कि यह है, आपका कार्यक्रम तार के साथ काम करता है और 0.
f 0.nɪt

1
@LliwTelracs खैर फिर संख्या का उपयोग करने की कोशिश मत करो। सर्वसम्मति के अनुसार, मैं उपयोग input()करने के बजाय उद्धरणों से घिरा होने के लिए इनपुट का उपयोग और आवश्यकता कर सकता हूं raw_input()। यदि आप शून्य इनपुट करना चाहते हैं, तो उपयोग करें "0"
mbomb007

अच्छा समाधान! मैं उम्मीद कर रहा था कि अधिकांश उत्तर लंबाई में असीम रूप से बढ़ रहे हैं (तकनीकी रूप से यह वही करता है लेकिन उसी अर्थ में नहीं)। बहुत बढ़िया!
हाइपरन्यूट्रीनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.