ab*1'3:*2+*0pnd3*:::::::::::::::1'3:*3+*0p1'3:*5+*0p1'3:*d+*0p1'3:*f+*0p1'3:*fa++*0p1'3:*fd++*0p1'4'3*f-*0p1'4'3*7-*0p1'4'3*5-*0p6:*:*4-1p6:*:*4+1p6:*:*8+1p6:*:*a+1p6:*:*8+2p6:*:*f1++2p6:*:*f3++2pn75*1-:1'3:*4+*0p6:*:*f2++2pnaa*:::::::::::::::::1'3:*6+*0p1'3:*7+*0p1'3:*f1++*0p1'3:*f2++*0p1'3:*fe++*0p1'3:*ff++*0p1'4'3*e-*0p1'4'3*d-*0p1'4'3*4-*0p1'4'3*3-*0p6:*:*3-1p6:*:*2-1p6:*:*b+1p6:*:*c+1p6:*:*9+2p6:*:*a+2p6:*:*f4++2p6:*:*f5++2pn67*::::::::::1'3:*8+*0p1'3:*a+*0p1'3:*f4++*0p1'3:*f5++*0p1'4'3*f-5-*0p1'4'3*c-*0p1'4'3*2-*0p6:*:*1-1p6:*:*d+1p6:*:*b+2p6:*:*f6++2pna5*::1'3:*9+*0p1'3:*f3++*0p6:*:*1pn68*:::::1'3:*b+*0p1'3:*f8++*0p1'4'3*f-2-*0p1'4'3*9-*0p1'4'3*1+*0p6:*:*f7++2pne8*:::::::1'3:*c+*0p1'3:*f9++*0p1'4'3*f-1-*0p1'4'3*8-*0p1'4'3*2+*0p6:*:*f2++1p6:*:*f+2p6:*:*f8++2pnf4*:1'3:*e+*0p1'4'3*3+*2pn77*::::1'3:*f6++*0p1'4'3*f-4-*0p6:*:*f1++1p6:*:*c+2p6:*:*e+2pnb4*1-::1'3:*f7++*0p6:*:*f+1p6:*:*d+2pnf4*1-::1'3:*fb++*0p6:*:*7+2p1'3:*1+*2pnf4*2-1'3:*fc++*0pn95*:::1'4'3*f-3-*0p1'4'3*a-*0p1'4'3**0p6:*:*1+1pn87*1'4'3*b-*0pnac*2-:1'4'3*6-*0p1'4'3*3+*0pnf4*3-1'4'3*1-*0pn88*2-6:*:*5-1pnc9*1-6:*:*2+1pnb4*:6:*:*3+1p6:*:*6+1pn88*6:*:*9+1pnd4*1-6:*:*e+1pnc8*2-:1'3:**1p1'3:**2pnd7*2+6:*:*4+2pn75*6:*:*6+2pn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ab*1'3:*2+*0pnd3*:::::::::::::::1'3:*3+*0p1'3:*5+*0p1'3:*d+*0p1'3:*f+*0p1'3:*fa++*0p1'3:*fd++*0p1'4'3*f-*0p1'4'3*7-*0p1'4'3*5-*0p6:*:*4-1p6:*:*4+1p6:*:*8+1p6:*:*a+1p6:*:*8+2p6:*:*f1++2p6:*:*f3++2pn75*1-:1'3:*4+*0p6:*:*f2++2pnaa*:::::::::::::::::1'3:*6+*0p1'3:*7+*0p1'3:*f1++*0p1'3:*f2++*0p1'3:*fe++*0p1'3:*ff++*0p1'4'3*e-*0p1'4'3*d-*0p1'4'3*4-*0p1'4'3*3-*0p6:*:*3-1p6:*:*2-1p6:*:*b+1p6:*:*c+1p6:*:*9+2p6:*:*a+2p6:*:*f4++2p6:*:*f5++2pn67*::::::::::1'3:*8+*0p1'3:*a+*0p1'3:*f4++*0p1'3:*f5++*0p1'4'3*f-5-*0p1'4'3*c-*0p1'4'3*2-*0p6:*:*1-1p6:*:*d+1p6:*:*b+2p6:*:*f6++2pna5*::1'3:*9+*0p1'3:*f3++*0p6:*:*1pn68*:::::1'3:*b+*0p1'3:*f8++*0p1'4'3*f-2-*0p1'4'3*9-*0p1'4'3*1+*0p6:*:*f7++2pne8*:::::::1'3:*c+*0p1'3:*f9++*0p1'4'3*f-1-*0p1'4'3*8-*0p1'4'3*2+*0p6:*:*f2++1p6:*:*f+2p6:*:*f8++2pnf4*:1'3:*e+*0p1'4'3*3+*2pn77*::::1'3:*f6++*0p1'4'3*f-4-*0p6:*:*f1++1p6:*:*c+2p6:*:*e+2pnb4*1-::1'3:*f7++*0p6:*:*f+1p6:*:*d+2pnf4*1-::1'3:*fb++*0p6:*:*7+2p1'3:*1+*2pnf4*2-1'3:*fc++*0pn95*:::1'4'3*f-3-*0p1'4'3*a-*0p1'4'3**0p6:*:*1+1pn87*1'4'3*b-*0pnac*2-:1'4'3*6-*0p1'4'3*3+*0pnf4*3-1'4'3*1-*0pn88*2-6:*:*5-1pnc9*1-6:*:*2+1pnb4*:6:*:*3+1p6:*:*6+1pn88*6:*:*9+1pnd4*1-6:*:*e+1pnc8*2-:1'3:**1p1'3:**2pnd7*2+6:*:*4+2pn75*6:*:*6+2pn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
इसे ऑनलाइन आज़माएं!
यह बनाना एक नर्क था।
यह कैसे काम करता है:
कार्यक्रम पुट स्टेटमेंट्स का एक समूह है जो एक प्रोग्राम बी को अपने चारों ओर असेंबल करता है जो फिर स्रोत बाइट के आधे हिस्से को दो बार स्थानांतरित करता है।
कार्यक्रम वास्तव में एक 1300 बाइट कार्यक्रम की 2 प्रतियां हैं, यह इतना है कि यह सुनिश्चित किया जाता है कि पूरे 1300 बाइट कार्यक्रम हमेशा एक पूरे के रूप में चला जाता है।
बेहतर स्पष्टीकरण:
हर Befunge-98 Quine प्रतीकों इस तरह के एक को रोकने के लिए की जरूरत है @या qऔर ,
समस्या : उन प्रतीकों में से कोई भी एक अच्छा के बाद से especialy बिंदु से शुरू होने हैं @और qतुरन्त कार्यक्रम समाप्त।
समाधान : स्रोत कोड में उन वर्णों से छुटकारा पाएं
समस्या : कैसे?
समाधान : pआवश्यक कोड को शामिल करने के लिए स्रोत कोड को संशोधित करने के लिए कमांड (पुट) का उपयोग करें जो एक बाइट द्वारा स्थानांतरित स्रोत कोड के प्रिंट को प्रिंट करेगा और जो कमांड धोखा दे रहा है उसका उपयोग न करें g।
समस्या : (जब ये समाप्त हो जाएँगे)
एक पुट कमांड 3 मान n x yदेता है, जो वर्ण, x-निर्देशांक, y- कोर्ड को निर्धारित करता है, लेकिन जब इन मानों का आरंभिक विभाजन आधा हो जाता है, तो यह आरंभिक स्रोत कोड में खराब वर्ण लिख सकता है, जिससे यह बेकार हो जाता है। क्विनिंग के लिए।
समाधान : (पिछले एक मैं वादा करता हूं)
स्रोत कोड की 2 प्रतियों का उपयोग करें, बाद वाला "सही एक" हो सकता है यह गलती से एक और समस्या को ठीक करता है जो कि एक पुट स्टेटमेंट (पी कमांड + स्थिर इनिशियलाइज़र) है जो आधी इच्छा में विभाजित होता है निष्पादित नहीं किया जाता है, यह प्रत्येक कथन की 2 प्रतियां होने से तय होता है। पिछली बात यह काम करने की जरूरत है कि हम पूरे स्रोत कोड को आधे से बाहर कैसे करें?
उत्तर :

यह इस बात का दृश्य प्रमाण है कि एक स्ट्रिंग बाइट की दो प्रतियाँ == एक बाइट स्थानांतरित स्ट्रिंग की दो प्रतियाँ क्यों हैं। इसका मतलब है कि हम कोड का आधा हिस्सा ले सकते हैं, बाइट शिफ्ट कर सकते हैं, फिर इसे दो बार प्रिंट कर सकते हैं (या कोड का आधा हिस्सा लें, बाइट इसे स्थानांतरित करें, प्रिंट करें, दोहराएं [वास्तव में ऐसा होता है])
यह कैसे लागू किया जाता है : मान लें कि 0123456789abcdef स्रोत है
Befunge Pseudocode:
0123456789abcv;;"123456789abcdef" < go this way <--
>PS'0, repeat 2x ^
PS का अर्थ है प्रिंट स्टैक (वास्तविक निर्देश नहीं)। हम स्टैक पर रिवर्स में स्रोत कोड के आधे हिस्से का उपयोग करते हैं ""फिर हम स्टैक को प्रिंट करते हैं और फिर हम 'पहले वर्ण को लाते हैं ( कमांड) 0जिसे हम सामने रखते हैं 'और इसे अंतिम रूप से प्रिंट करते हैं जो बाइट शिफ्ट का कारण बनता है, फिर हम चक्र को दोहराते हैं एक बार फिर दूसरी प्रति छापने के लिए। इससे निपटने के लिए एक तकनीकी स्रोत के प्रतीक हैं, यह परेशानी पैदा कर सकता है अगर हम इसे स्रोत कोड निष्पादित करते समय लिखते हैं, तो मैंने इसे अधिक पुट बयानों को जोड़कर किया जो बाहरी रूप से इसकी देखभाल करते हैं।
इससे कोड कुछ इस तरह दिखता है:

स्पष्टीकरण :
ग्रीन हाइलाइट: कोड जो स्रोत में वर्ण जोड़ने का ध्यान रखता है
ग्रे लेटर्स (खराब दृश्यता क्षमा करें): कोड जो ग्रीन कोड द्वारा जोड़ा जाता
है ।
ब्लू हाइलाइट: लाल हाइलाइट देखें
ऑरेंज हाइलाइट: कोड जो कि सुनिश्चित करता है कि हमने @पीले क्षेत्र में एक (टर्मिनेट) कमांड डालकर 2 बाइट शिफ्ट की गई प्रतियां लिखी थीं ।
तीर को उम्मीद है कि यह स्पष्ट करना चाहिए कि कोड प्रवाह कैसे जाता है।
यहाँ अंतिम कठिन हिस्सा आता है: बच्चों के स्रोत कोड
कहाँ से आते हैं?
संक्षिप्त उत्तर: C # मैजिक
लॉन्ग उत्तर: C # कोड द्वारा संकलित हाथ से बनाए गए 100+ Befunge कोड स्निपेट्स। मैंने मैन्युअल रूप से लगभग 100 निरंतर इनिशियलाइज़र्स (बीफ़ुन कोड का एक टुकड़ा जो एक निश्चित संख्या को ढेर करने के लिए धक्का देता है) को हाथ से लिखा और फिर इसे 1300 बाइट बीफुंज आउटपुट में संकलित करने के लिए एक कस्टम सी # प्रोग्राम का उपयोग किया, जिसे मैंने दो बार कॉपी किया और फाइनल किया। कार्यक्रम।
क्या तुम अभी भी यहां हो? पढ़ने के लिए बहुत धन्यवाद! (या अंत तक कम से कम स्क्रॉल करना)
मुझे आशा है कि मेरे बुरे चुटकुले मजेदार थे और कष्टप्रद नहीं थे।
नोट: इस कोड में कोई भी स्टेटमेंट एग कमांड नहीं बनाता है जो धोखा होगा।
EDIT: मैंने डेवलपर टूल का उपयोग करके TIO में निम्नलिखित जावास्क्रिप्ट कोड का उपयोग करके कोड को सत्यापित किया है
setInterval(()=>{document.getElementById("code").value =
document.getElementById("output").value;
document.getElementById("run").click();}, 2000);