कार्यक्रम ए :
"iQ ²¯24
G²õ@i'#+Xd"iQ ²¯24
G²õ@i'#+Xd
प्रोग्राम बी 8kB से अधिक लंबा है, इतना लंबा है कि लिंक टूट जाता है, इसलिए मैं पूरी बात पेस्ट नहीं करूंगा। यहाँ एक नमूना है:
#þ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#ÿ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#Ā"iQ ²¯24
G²õ@i'#+Xd"iQ ²
मुझे NUL
काम करने के लिए एक बाइट प्राप्त करने का तरीका नहीं मिला , यही वजह है कि प्रोग्राम बी में केवल 255 अद्वितीय अक्षर हैं। प्रोग्राम बी में अनिवार्य रूप से एक एकल कार्यक्रम की 255 प्रतियां शामिल हैं, जहां हर बार एक अप्रासंगिक बाइट को बदल दिया जाता है, और पहले 254 निष्पादन को अनदेखा किया जाता है।
स्पष्टीकरण के लिए, मैं ए के इस सरलीकृत संस्करण के साथ शुरू करूंगा ताकि परिणामस्वरूप बी चर्चा करना आसान हो।
"iQ ²¯23
3õ@i'#+Xd"iQ ²¯23
3õ@i'#+Xd
यह कार्यक्रम मूल पेलोड-सक्षम जाप क्वीन पर आधारित है । प्रारंभ में स्ट्रिंग में बाकी प्रोग्राम का डुप्लिकेट होता है, iQ ²
एक उद्धरण सम्मिलित करता है और पूरे प्रोग्राम का एक स्ट्रिंग प्रतिनिधित्व बनाने के लिए डुप्लिकेट करता है, और फिर ¯23
खुद को और उसके बाद सब कुछ बंद कर देता है। परिणामी स्ट्रिंग एक प्रोग्राम है जो प्रोग्राम ए को आउटपुट करता है :
"iQ ²¯23
3õ@i'#+Xd"iQ ²
मैं इस स्ट्रिंग का उल्लेख करूंगा U
।
ए की अंतिम पंक्ति U
हर बार एक छोटे से बदलाव के साथ कई बार एक गुच्छा को दोहराती है। विशेष रूप से, X
रेंज में प्रत्येक संख्या के लिए [1...3]
यह आउटपुट करता है कि चारकोड वाला चरित्र "#c" + U
कहां c
है X
। जाप का डिफ़ॉल्ट व्यवहार उन तारों को बिना उद्धरण चिह्नों के साथ आउटपुट करना और अल्पविराम द्वारा अलग करना है, इसलिए यह हमारे सरलीकृत ए का आउटपुट है (ध्यान दें कि प्रत्येक के बीच एक अप्राप्य बाइट है #
और "iQ
:
#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²
हम इसे सरलीकृत बी कहेंगे ।
सरलीकृत बी में एक सरल संरचना होती है, जिसके बीच बारी-बारी से #c
और U
। सौभाग्य से इस उत्तर के लिए, प्रत्येक #c
और U
के रूप में एक अल्पविराम के द्वारा अलग व्यवहार किया जाता है, और इस स्थिति में उस के व्यवहार सब कुछ है, सिवाय इसके आखिरी U
उत्पादन पर कोई प्रभाव नहीं है। सरलीकृत बी का एकमात्र भाग जो उत्पादन को प्रभावित करता है वह है:
"iQ ²¯23
3õ@i'#+Xd"iQ ²
यह समान है U
कि हम पहले से ही आउटपुट ए को सरलता से जानते हैं।
सरलीकृत ए और प्रोग्राम ए के बीच एकमात्र अंतर यह है कि सीमा [1...3]
के लिए प्रतियां पैदा करने के बजाय वास्तविक कार्यक्रम रेंज के लिए प्रतियां उत्पन्न करता है [1...256]
। जिसके परिणाम में से #c
प्रत्येक के 256 संस्करणों में एक अलग चरित्र है, हालांकि अंतिम संस्करण "a" एक बहु-बाइट चरित्र है, इसलिए यह किसी भी अद्वितीय बाइट्स को नहीं जोड़ता है, लेकिन अंतिम U
को छोड़कर सब कुछ अभी भी अनदेखा है।