सर्पिल , स्कोर: 61921 5127 4715 4655 4191
4.X~>v+^#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
X * X X X X X X X X X X X X X X X X X X X X X X X X X
! > h y t f V b n j u [ ( 1 3 2 ) ] U J N B F T Y H G
0;vgv*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*vvv****v+^v+^v+^v+^*v++4
X X X X X X X X X X X X X X X X X X X X X X X X X X
v v v v v v v v v v v v v v v v v v v v v v v v v v
Y y J F V u t U [ G H B n 3 N 2 j ) h g f ] ( 1 b T
एक दुभाषिया यहाँ पाया जा सकता है ।
स्पष्टीकरण:
P.X~ZZ*v+^#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
X X X X X X X X X X X X X X X X X X X X X X X X X X
! h y t f V b n j u r d c m k i e s x l o w a z p q
0;vgv*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*****************************************************************vP
X X X X X X X X X X X X X X X X X X X X X X X X X X
v v v v v v v v v v v v v v v v v v v v v v v v v v
z y x w V u t s r q p o n m l k j i h g f e d c b a
कार्यक्रम 0
चौथी पंक्ति के चरित्र पर शुरू होता है । चलाने के लिए कोड का पहला टुकड़ा है 0;vg
। ;
इनपुट के रूप में एक संख्या लेता है और इसे स्टैक में रखता है। v
स्टैक में रजिस्टर (शून्य) में क्या है। इसका उपयोग काउंटर के रूप में किया जाएगा। g
एक लेबल है, जब यह पहुंच जाता है, तो नियंत्रण g
कोड में पत्र की अन्य घटना के लिए कूदता है ।
तो यह वह जगह है जहां नियंत्रण अब है:
X
v
g
चूंकि अन्य सभी दिशाओं में व्हॉट्सएप है, इसलिए निर्देश सूचक ऊपर की ओर बढ़ने लगता है।
v
स्टैक में एक शून्य रखता है, और X
स्टैक से तुरंत पॉप करता है। चूँकि पोप वैल्यू शून्य है, इंस्ट्रक्शन पॉइंटर चलता है X
(अन्यथा इसे व्हॉट्सएप के रूप में माना जाता है)।
डिफ़ॉल्ट रूप से, नियंत्रण प्रवाह टर्न-राइट मोड में होता है, इसलिए अब जब यह जंक्शन तक पहुंचता है, तो निर्देश सूचक दाईं ओर मुड़ता है। v
फिर से एक शून्य को स्टैक में धकेलता है, *
रजिस्टर को एक से बढ़ाता है।
v*v*v
X
v
g
v
स्टैक में रजिस्टर (नंबर 1) में क्या है, अगले स्थानों ने निर्देश पॉइंटर ने अगले को मारते हुए दाईं ओर मुड़ने का प्रयास किया X
। केवल स्टैक में जोड़ा गया मान पॉप किया गया है और रजिस्टर में रखा गया है। क्योंकि यह गैर-शून्य है, X
दर्ज नहीं किया गया है, और आईपी *
इसके बदले दाईं ओर आगे बढ़ता है , फिर से रजिस्टर में मूल्य बढ़ाता है।
v*v*v*v*v
X X X X X
v v v v v
i h g f e
यह बार-बार होता है जब तक हम इस हिस्से के अंत तक नहीं पहुंच जाते हैं और एस की लाइन *
शुरू हो जाती है। अब तक रजिस्टर में मूल्य 6 है, जो कि ASCII अक्षर का g
ऋण ASCII पत्र है a
। इस प्रकार 97 *
एस की एक पंक्ति के साथ हम रजिस्टर में मूल्य को बढ़ाकर 103 g
कर देते हैं , जो उस पत्र से मेल खाता है जिसे हम प्रिंट करना चाहते हैं। v
इसे स्टैक में धकेल दिया जाता है, और P
एक और लेबल होता है जिस पर हम P
कोड की पहली पंक्ति पर दूसरे पर जाते हैं।
यहां .
स्टैक से मूल्य को पॉप करता है और इसे एक चरित्र के रूप में प्रिंट करता है। उसके बाद X
स्टैक से एक्सट्रॉनिक शून्य को पॉप करता है, फिर स्टैक ~
में दो शेष मानों की तुलना करता है (काउंटर और इनपुट इनपुट होने वाले मान)। यदि मान समान हैं, तो ऑपरेटर स्टैक में शून्य रखता है (अन्यथा -1 या 1)। फिर से, नियंत्रण दाईं ओर मुड़ने का प्रयास करता है। X
स्टैक से तुलना के मूल्य को पॉप करता है, अगर यह शून्य है X
, और इसे !
दर्ज करने के बाद , प्रोग्राम को समाप्त करना।
P.X~ZZ*v+^
X
!
अन्यथा आईपी जारी है Z
, जो एक लेबल है जो इस मामले में दाईं ओर केवल एक कदम कूदता है। ऐसा करने का कारण यह है कि कूदने से रजिस्टर में मूल्य शून्य हो जाता है। *
रजिस्टर को बढ़ाता है और v
परिणामस्वरूप 1 को स्टैक में रखता है। +
स्टैक के दो शीर्ष तत्वों (1 और काउंटर) को पॉप करता है, उन्हें जोड़ता है, और परिणाम को स्टैक में रखता है (प्रभाव में यह एक से काउंटर को बढ़ाता है)। ^
स्टैक के परिणाम को स्टैक से हटाए बिना रजिस्टर से कॉपी करता है।
#
रजिस्टर में v
मूल्य को घटाता है, घटे हुए मूल्य को स्टैक में धकेलता है, आईपी दाईं ओर मुड़ने का प्रयास करता है, और X
स्टैक से मूल्य को हटाता है। यदि मान गैर-शून्य है तो आईपी पूर्व में चलती रहती है, रजिस्टर में मूल्य को घटाती है, जब तक कि यह शून्य को हिट नहीं करता है, और आईपी एक X
शाखा में प्रवेश करता है ।
#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
X X X X X X X X X X X X X X X X X X X X X X X X X
h y t f V b n j u r d c m k i e s x l o w a z p q
शाखा काउंटर के मूल्य के अनुरूप एक लेबल की ओर जाता है। लेबल से टकराने पर, नियंत्रण उस अनुभाग में लेबल की अन्य घटना के लिए कूदता है जहां हमने लेबल के साथ शुरू किया था g
, एक और पुनरावृत्ति शुरू कर रहा है। जैसा कि g
, रजिस्टर में मूल्य उस अक्षर के ASCII मूल्य तक बढ़ जाता है जिसे हमें प्रिंट करने की आवश्यकता होती है। फिर चरित्र मुद्रित होता है और काउंटर बढ़ जाता है, एक और लेबल चुना जाता है। यह तब तक होता है जब तक कि अंतिम पुनरावृत्ति के बाद काउंटर इनपुट के बराबर होता है, और प्रोग्राम समाप्त हो जाता है।
संपादित करें:
P.X~Zv+^
X *
! Z
जैसा है वैसा ही हासिल करता है
P.X~ZZ*v+^
X
!
लेकिन कम व्हाट्सएप के साथ।
2 संपादित करें:
vv****v+^v+^v+^v+^*v++P
के बजाय इस्तेमाल किया जा सकता है:
*****************************************************************vP