Befunge - 37 x 5 = 185 38 x 3 = 114 वर्ण
यह पूर्णांक संख्या तक सीमित है क्योंकि Befunge में फ्लोटिंग पॉइंट सपोर्ट नहीं है।
&v /& _ #`&# "-"$# -#< v
>~:0`!#v_:" "`! #v_:","`#^_"*"`#v_&*>
^ ># $ .# @#< >&+
व्याख्या
Befunge की सबसे बड़ी विशिष्ट विशेषता यह है कि इसके बजाय अधिकांश भाषाओं की तरह निर्देशों का रैखिक सेट है; यह एकल चरित्र निर्देशों का 2 डी ग्रिड है, जहां नियंत्रण किसी भी दिशा में प्रवाहित हो सकता है।
पहला &
सरलता से पहला नंबर इनपुट करता है। v
और >
उसके बाद दूसरी पंक्ति पर मुख्य पथ के लिए रीडायरेक्ट नियंत्रण।
~:0`!#v_
यह एक चरित्र इनपुट करता है ( ~
), इसे डुप्लिकेट करता है ( :
), स्टैक पर शून्य को धक्का देता है ( 0
), शीर्ष दो तत्वों को पॉप करता है और निर्धारित करता है कि क्या दूसरा पहले से अधिक है ( `
मुझे आश्चर्य है कि आप पाने के लिए `` का उपयोग नहीं कर सकते हैं) कोड backticks। );) शीर्ष तत्व की सत्यता का संकेत देता है ( !
), फिर सही हो जाता है अगर यह शून्य है, तो नीचे (अन्यथा #v_
)।
मूल रूप से यह जाँच कर रहा है कि इनपुट -1
अधिक इनपुट का प्रतिनिधित्व कर रहा है या नहीं।
># $ .# @
यदि इनपुट था -1
तो डुप्लिकेट किए गए इनपुट मान को छोड़ दिया गया है ( $
), स्टैक के शीर्ष पर पूर्णांक ( .
) के रूप में आउटपुट है और प्रोग्राम रुका हुआ है ( @
)।
:" "`! #v_
अन्यथा एक समान प्रक्रिया यह निर्धारित करने के लिए दोहराई जाती है कि इनपुट अंतरिक्ष से कम या बराबर है। यदि यह एक स्थान है तो नियंत्रण नीचे चला जाता है, अन्यथा सिर को ठीक से नियंत्रित करें।
^ ># $ .# @#<
यदि यह एक स्थान है तो इसे बाईं ओर पुनर्निर्देशित किया गया है ( <
); कार्यक्रम रुक ( @
), आउटपुट ( .
) और सही पुनर्निर्देशन ( >
) सभी का उपयोग कर छोड़ दिया जाता है #
; लेकिन स्टैक से स्थान को हटाने के लिए डिसकस निष्पादित किया जाता है। अंत में इसे अगले निष्पादन को शुरू करने के लिए पुनर्निर्देशित किया गया है ^
।
:","`#^_
यदि यह एक अंतरिक्ष एक ही प्रक्रिया पर विभाजित करने के लिए करता है, तो उस में है प्रयोग किया जाता है नहीं था [+, *]
या में [-, \]
सही और ऊपर क्रमशः जा रहा है।
>~ "*"`#v_&*>
^ >&+
इसके लिए [+, *]
यह निर्धारित करने के लिए फिर से विभाजित किया जाता है कि क्या यह एक +
या एक है *
। यदि +
इसे नीचे निर्देशित किया जाता है तो अगला नंबर इनपुट ( &
) है और उन्हें जोड़ा जाता है ( +
), नियंत्रण फिर चारों ओर लपेटता है और अगले वर्ण के लिए मुख्य पथ पर पुनर्निर्देशित किया जाता है। यदि *
यह इनपुट ( &
) और कई गुना ( *
) है तो सीधे चारों ओर लपेटता है।
/& _ #`&# "-"$# -#<
इसके [-, \]
लिए दाईं ओर बाईं ओर शुरू होता है। #
'एस उनके पीछे चरित्र को छोड़ तो प्रारंभिक मार्ग है "-"`_
अगर यह होता है जो केवल निर्धारित करता है -
या /
। यदि ऐसा है /
तो यह इनपुट ( &
) और डिवाइड ( /
) पर छोड़ दिया जाता है । यदि यह -
तब सही है, तो फिर से वर्णों को छोड़ देना ताकि यह निष्पादित हो जाए &"-"$-
जिसके परिणामस्वरूप संख्या इनपुट हो जाए ( &
) -
वर्ण को स्टैक पर धकेला जा रहा है, फिर छोड़ दिया ( "-"$
) और फिर घटाव की गणना की जा रही है ( -
)। नियंत्रण को फिर से मुख्य पथ पर भेज दिया जाता है।