बर्लेस्क, 40 बाइट्स
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh
स्पष्टीकरण:
बर्लेस्क में उन्नत स्टैक और कोड हेरफेर बिल्ट-इन है। वास्तव में, आप प्रोग्राम के स्रोत कोड का उपयोग नहीं कर सकते हैं, लेकिन आप भविष्य में निष्पादित होने वाले शेष कोड तक पहुंच सकते हैं। इसका मतलब यह है कि #Qइसके बाद आने वाले सभी कोड वापस आ जाएंगे, यही वजह है कि हमें #Qउस कोड में सब कुछ जोड़ना होगा जो हम कर रहे हैं ri#Q।
blsq ) #Q1 2++
12 -- this is the result of 1 2++
{1 2 ++} -- this is the result of #Q
++1 2स्टैक आधारित होने के कारण तकनीकी रूप से अवैध कोड है। लेकिन हम इसे निष्पादित करने के लिए कोड में हेरफेर कर सकते हैं 1 2++:
blsq ) #Q<-#q++1 2
12
इन बिल्ट-इन के साथ काम करना अविश्वसनीय रूप से पेचीदा है और किसी ने भी अभी तक क्वीन से संबंधित चीजों के अलावा किसी भी उत्पादक के लिए इसका इस्तेमाल नहीं किया है। यदि आप उलट जाते हैं ++1 2तो आपको 2 1++उत्पादन मिलेगा 21और नहीं 12। ऊपर दिए गए कोड 12का कारण #Qयह है क्योंकि इसमें भी <-इतना ही शामिल है कि हम अंत में बहुत अधिक निष्पादित कर रहे हैं 2 1++: p। हम निष्पादन को समाप्त करते हैं 2 1++#q<-जो पैदा करता है 12।
हम वास्तव में हमारे कोड में चीजों को बदल सकते हैं उदाहरण के लिए यह कोड ?+अपने आप में सभी घटनाओं को प्रतिस्थापित करता है?*
blsq ) #Q(?+)(?*)r~5.-#q5 5?+
25
उपयोग:
$ echo "1" | blsq --stdin 'ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh'
hs fi sp "-<" j +. /\ "Q#ir" -~ HS 2Q#ir
$ echo "0" | blsq --stdin 'ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh'
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh