मेटा क्वीन चेकर


10

यह चुनौती, यदि आप इसे स्वीकार करते हैं, तो तीन कार्य या प्रोग्राम A, B और C लिखना है:

  • A एक क्वीन है जो A, B और C (जो आपके सबमिशन में कोड की पूरी सामग्री भी है) को आउटपुट करता है।
  • B एक पैरामीटर F लेता है और जाँचता है कि क्या यह ऐसी क्वीन (FBC आउटपुट) है, या कुछ अलग कर रही है।
  • C एक पैरामीटर G लेता है और जाँचता है कि क्या G संभवतः B की तरह काम करता है (यह जाँचता है कि F FGC FGC)। यह तय करना असंभव है कि क्या कोई फ़ंक्शन क्वीन चेकर है, तो चलिए कुछ सरल करते हैं:
    • यदि G के B के लिए वैध है तो उसे सत्य लौटना चाहिए।
    • यदि सभी वैध खानों के लिए जी रिटर्न गलत हो जाता है, या जी को सभी वैध गैर-खानों के लिए सत्य लौटाता है, तो इसे वापस लौटना चाहिए।
    • यह कुछ भी वापस कर सकता है, दुर्घटना हो सकती है या समाप्त नहीं हो सकती है, आदि, अगर यह अन्य मामलों में से कोई है।

ध्यान दें कि बी संभव है। ए और एफ के पास कोई इनपुट नहीं है, इसलिए आप उन्हें चला सकते हैं और परिणाम की जांच कर सकते हैं।

नियम

  • ए। के आउटपुट से कौन से भाग ए, बी और सी हैं, यह बताने का कोई तरीका होना चाहिए। उदाहरण के लिए: प्रत्येक में एक रेखा होती है, या वे दुभाषिया में तीन कार्यों के रूप में पहचाने जाते हैं।
  • प्रत्येक फ़ंक्शन को केवल स्वयं की परिभाषा के साथ चलना चाहिए, न कि आपका पूरा कोड।
  • आप एक फ़ंक्शन / प्रोग्राम या उसके स्रोत कोड या बी (या जी) और सी के इनपुट के रूप में दोनों की एक जोड़ी का उपयोग कर सकते हैं।
  • आप उन मूल्यों के सबसेट को सत्य / असत्य को फिर से परिभाषित कर सकते हैं। आपको लगातार एक स्ट्रिंग की तरह, आपके द्वारा चुने गए कुछ प्रकारों को वापस करने की आवश्यकता हो सकती है।
  • आपको ए, बी, एफ और जी की आवश्यकता हो सकती है, यदि उन्हें वैध मापदंडों के साथ बुलाया जाता है, तो लगातार आपके द्वारा चुने गए कुछ प्रकार के अन्य इनपुट या साइड इफेक्ट नहीं होते हैं, जैसे कि वैश्विक चर का उपयोग करना, या स्टड पढ़ना, आदि।
  • आप एफ और जी को भी मान सकते हैं, यदि उन्हें वैध मापदंडों के साथ कहा जाता है, तो हमेशा समाप्त करें।
  • F को A के समान स्थिति में काम करना चाहिए। इसलिए यह B या C या किसी अन्य चर के अस्तित्व पर निर्भर नहीं कर सकता है, जब तक कि चर को इसके उत्पादन में अपने हिस्से में परिभाषित नहीं किया जाता है।
  • कोई भी कार्य या कार्यक्रम अपने स्वयं के स्रोत कोड को नहीं पढ़ सकता है।
  • यह बाइट्स जीत में कोड-गोल्फ, सबसे छोटा कोड (जो कि ए का आउटपुट है) है।

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

आप सभी क्वाइन्स और नॉन-क्वाइन्स के साथ G को कैसे चेक करेंगे ? मैं वर्तमान में एक Mathematica समाधान पर काम कर रहा हूँ।
लीजनमोनमाल 978

@PeterTaylor "आप एफ और जी को भी मान सकते हैं, यदि उन्हें वैध मापदंडों के साथ कहा जाता है, तो हमेशा समाप्त करें।" और "आउटपुट" का मतलब वापसी हो सकता है, जरूरी नहीं कि स्टडआउट पर प्रिंट करें।
jimmy23013

@ LegionMammal978 सभी quines और गैर-quines की जाँच करना असंभव है । लेकिन सी का कार्य कुछ सरल है, जहां आपको केवल एक क्वीन और एक गैर-क्वीन की जांच करने की आवश्यकता है।
jimmy23013

1
@PyRulez मुझे लगता है कि यह इस चुनौती की भावना में है, इसलिए मैं इसकी अनुमति देने जा रहा हूं। लेकिन फ़ंक्शन अपने स्वयं के स्रोत कोड तक नहीं पहुंच सकता है।
jimmy23013

जवाबों:


1

सीजेएम, 254 बाइट्स

एक उदाहरण का जवाब, गोल्फ नहीं।

{{['{\"_~}{{[1$'{@\"_~}"{{["_~}"2$+'{@"_~}"]s`"{{['{\\"\+"]s}_~}"+~1$~{L}@~!&}_~}_``1>W<"\"]s\~=}_~}"@]s}_~}{{[1$'{@"_~}{{[\"_~}\"2$+'{@\"_~}\"]s`\"{{['{\\\\\"\+\"]s}_~}\"+~1$~{L}@~!&}_~}"]s\~=}_~}{{["_~}"2$+'{@"_~}"]s`"{{['{\\"\+"]s}_~}"+~1$~{L}@~!&}_~}

3 कार्य हैं:

{{['{\"_~}{{[1$'{@\"_~}"{{["_~}"2$+'{@"_~}"]s`"{{['{\\"\+"]s}_~}"+~1$~{L}@~!&}_~}_``1>W<"\"]s\~=}_~}"@]s}_~}
{{[1$'{@"_~}{{[\"_~}\"2$+'{@\"_~}\"]s`\"{{['{\\\\\"\+\"]s}_~}\"+~1$~{L}@~!&}_~}"]s\~=}_~}
{{["_~}"2$+'{@"_~}"]s`"{{['{\\"\+"]s}_~}"+~1$~{L}@~!&}_~}

ए और एफ कोई पैरामीटर नहीं लेते हैं और एक स्ट्रिंग लौटाते हैं। बी, जी और सी पैरामीटर के रूप में सीजेएम ब्लॉक लेते हैं और सत्य के लिए 1, या फॉल्सी के लिए 1 लौटाते हैं।

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