पॉलीग्लॉट ऐसे प्रोग्राम हैं जो एक साथ कई प्रोग्रामिंग भाषाओं में मान्य हैं। अधिकांश ऐसे बहुभाषाविदों को इस तरह से लिखा जाता है कि एक भाषा के कुछ निर्माणों की व्याख्या किसी अन्य भाषा की टिप्पणियों के रूप #define
में की जाती है (जैसे सी में कई स्क्रिप्टिंग भाषाओं में एक टिप्पणी के रूप में व्याख्या की जा रही है)।
मैं यह देखने के लिए उत्सुक हूं कि क्या यह गैर-तुच्छ बहुभुज बनाना संभव है जिसमें कोई टिप्पणी नहीं है, लेकिन जब आप किसी भी गैर-व्हाट्सएप चरित्र को हटाते हैं, तो तुरंत बदल जाते हैं, इसलिए मैं आपको इस तरह के कार्यक्रम के साथ आने के लिए चुनौती देता हूं।
ठोस नियम इस प्रकार हैं:
- (आउटपुट)। आपके प्रोग्राम को आपकी प्रत्येक भाषा के तहत कंसोल पर कुछ आउटपुट का उत्पादन करना होगा। यही है, आपके प्रोग्राम को कुछ भी प्रिंट किए बिना केवल बाहर निकलने की अनुमति नहीं है।
- (विचरण)। मानक पॉलीग्लॉट परिभाषा की छूट के रूप में, प्रोग्राम का आउटपुट भाषाओं के बीच भिन्न हो सकता है।
- (त्रुटियां)। आपके प्रोग्राम को आपकी किसी भी भाषा के तहत कोई भी त्रुटि (मोटे तौर पर परिभाषित) का उत्पादन नहीं करना चाहिए। अधिकांश भाषाओं के लिए, यह संकलक और / या दुभाषिया से एक गैर-शून्य निकास कोड लौटाने के रूप में परिभाषित किया गया है।
- (प्रतिबंध)। आपके कोड से किसी भी एक गैर-व्हाट्सएप चरित्र को हटाने से आपके कार्यक्रम को आपकी प्रत्येक भाषा के तहत अपना व्यवहार बदलने का कारण होना चाहिए । कार्यक्रम उस भाषा के लिए अमान्य हो जाने या उत्पादन होने वाले आउटपुट को बदलकर "बदल" सकता है।
- यह एक कोड चुनौती है । विजेता वह प्रोग्राम है जो अधिकांश प्रोग्रामिंग भाषाओं में मान्य है। छोटे कार्यक्रम की लंबाई के पक्ष में संबंध टूट जाएंगे।
प्रतिबंध का नियम कई पात्रों को हटाने पर लागू नहीं होता है। यही है, यह ठीक है अगर एक साथ कई वर्णों को हटाने से आपकी किसी भाषा के लिए कोई परिवर्तन नहीं होता है।
ध्यान दें कि प्रतिबंध नियम का अर्थ है कि आप अपनी भाषा में से किसी एक के रूप में व्हॉट्सएप का उपयोग नहीं कर सकते हैं, क्योंकि किसी भी गैर-व्हाट्सएप चरित्र को हटाने से व्हॉट्सएप कार्यक्रम का व्यवहार नहीं बदलेगा।
पायथन 2 और पायथन 3: भाषाओं के लिए उपरोक्त सभी प्रतिबंधों को पूरा करने वाले एक कार्यक्रम का एक सरल उदाहरण यहां दिया गया है।
print("Hello World!")
किसी भी चरित्र को हटाने से print
दोनों भाषाओं को फेंकने का कारण होगा NameError
; किसी भी ब्रैकेट या उद्धरण को SyntaxError
हटाने से एक फेंक दिया जाएगा , और किसी भी स्ट्रिंग वर्ण को हटाने से दोनों भाषाओं में आउटपुट बदल जाएगा। (ध्यान दें कि print("hello", "world")
उपरोक्त नियमों के तहत एक अधिक सूक्ष्म, लेकिन अभी भी मान्य कार्यक्रम है)।
यह उदाहरण थोड़ा लंगड़ा है क्योंकि पायथन 2 और पायथन 3 बहुत समान हैं, इसलिए मैं किसी भी अन्य समाधान को स्वीकार नहीं करूंगा जो केवल एक ही भाषा के विभिन्न संस्करणों का उपयोग करते हैं (विशेष रूप से पायथन 2 और पायथन 3)।
print("Hello World!")
रूबी कोड भी मान्य है