चुनौती
इस चुनौती में, आप एक स्रोत भाषा S
और लक्ष्य भाषा निर्दिष्ट करते हैंT
। आपका कार्य निम्नलिखित कार्यक्रम P
को भाषा में लिखना है S
। यदि Q
भाषा में एक वैध कार्यक्रम T
इनपुट के रूप में दिया जाता है P
, तो यह R
भाषा में एक वैध कार्यक्रम का उत्पादन करेगा T
जो कोई इनपुट और आउटपुट नहीं लेता है Q(R)
, अर्थात, प्रोग्राम Q
को स्रोत कोड पर लागू किया जाता है R
। इसके अलावा , आपको अपने उत्तर को एक निर्विवाद उदाहरण कार्यक्रम Q
(अधिक दिलचस्प, बेहतर, हालांकि आप इसके लिए कोई अंक नहीं देते हैं), परिणामी कार्यक्रम R
और के आउटपुट में प्रस्तुत करना चाहिए R
। यह कोड-गोल्फ है, इसलिए P
जीत के लिए सबसे छोटा कोड है ।
दूसरे शब्दों में, यह एक "सार्वभौमिक क्वीन कंस्ट्रक्टर" लिखने के बारे में एक चुनौती है जो सामान्यीकृत quines के मनमाने प्रकार का निर्माण कर सकता है।
स्पष्टीकरण
- आपका स्रोत और लक्ष्य भाषाएं समान हो सकती हैं।
- कार्यक्रम
P
को इनपुट (STDIN या समतुल्य से) के रूप में एक स्ट्रिंग लेना चाहिए, और प्रत्येक आउटपुट प्रोग्राम की तरह एक स्ट्रिंग (STDOUT या समकक्ष) आउटपुट करना चाहिएR
। - इनपुट प्रोग्राम
Q
को भी एक स्ट्रिंग को दूसरी स्ट्रिंग में बदलना चाहिए, लेकिन उनका रूप अधिक लचीला होता है: वे स्ट्रिंग-टू-स्ट्रिंग फ़ंक्शन, कोड स्निपेट हो सकते हैं जो एक निश्चित नाम के साथ एक चर को संशोधित करते हैं, स्निपेट जो डेटा स्टैक को संशोधित करते हैं यदि आपकी लक्ष्य भाषा एक है, आदि, आप यह भी कह सकते हैंQ
कि उदाहरण के लिए, वे कोई टिप्पणी नहीं कर सकते हैं। हालाँकि, आप इनपुट प्रोग्राम के रूप में किसी भी कम्प्यूटेशनल स्ट्रिंग-टू-स्ट्रिंग फ़ंक्शन को लागू करने में सक्षम होना चाहिएQ
, और आपको यह स्पष्ट रूप से बताना होगा कि वे कैसे कार्य करते हैं और आगे आप उन पर क्या दबाव डालते हैं। - आउटपुट प्रोग्राम
R
वास्तव में एक (सामान्यीकृत) क्वीन होना चाहिए, इसलिए इसे तब तक कोई इनपुट (उपयोगकर्ता इनपुट, फ़ाइलें आदि) नहीं पढ़ना चाहिएQ
। - मानक खामियों को अस्वीकार कर दिया जाता है।
एक उदाहरण
मान लीजिए कि मैं पायथन को अपनी स्रोत भाषा के रूप में, और हास्केल को अपनी लक्षित भाषा के रूप में चुनता हूं, और मुझे आगे की आवश्यकता है कि इनपुट प्रोग्राम String -> String
नाम के फ़ंक्शन की एक-पंक्ति परिभाषा होनी चाहिए f
। अगर मैं स्ट्रिंग-रिवर्सल प्रोग्राम देता हूं
f x = reverse x
मेरे पायथन प्रोग्राम के इनपुट के रूप में P
, यह एक और हास्केल प्रोग्राम के सोर्स कोड को आउटपुट करेगा R
। यह प्रोग्राम स्रोत कोड के STDOUT पर प्रिंट करता है R
, लेकिन उलटा होता है। यदि P
पहचान समारोह दिया जाता है
f x = x
इनपुट के रूप में, आउटपुट प्रोग्राम R
एक क्वीन है।