Befunge - 37 x 5 = 185 38 x 3 = 114 ตัวอักษร
นี่คือ จำกัด จำนวนเต็มเนื่องจาก Befunge ไม่มีการสนับสนุนจุดลอย
&v /& _ #`&# "-"$# -#< v
>~:0`!#v_:" "`! #v_:","`#^_"*"`#v_&*>
^ ># $ .# @#< >&+
คำอธิบาย
คุณสมบัติที่โดดเด่นที่สุดของBefungeคือแทนที่จะเป็นชุดคำสั่งเชิงเส้นเหมือนภาษาส่วนใหญ่ มันเป็นตาราง 2d ของคำแนะนำตัวอักษรเดียวซึ่งการควบคุมสามารถไหลได้ในทุกทิศทาง
วิธีแรก&เพียงแค่ใส่หมายเลขแรก vและ>การควบคุมแล้วเปลี่ยนเส้นทางไปยังเส้นทางหลักในแถวที่สอง
~:0`!#v_
อินพุตนี้ใส่อักขระ ( ~) ทำซ้ำ ( :) ดันศูนย์ลงบนสแต็ก ( 0) ดึงองค์ประกอบสองอันดับแรกและพิจารณาว่าตัวที่สองนั้นใหญ่กว่าตัวแรกหรือไม่ ( ` ฉันประหลาดใจที่คุณไม่สามารถใช้ `` `เพื่อรับ โค้ด backticks. ) กลับค่าความจริงขององค์ประกอบด้านบน ( !) จากนั้นไปทางขวาหากเป็นศูนย์ลดลงอย่างอื่น ( #v_)
โดยพื้นฐานแล้วมันกำลังตรวจสอบว่าอินพุต-1แสดงถึงอินพุตอีกต่อไปหรือไม่
># $ .# @
หากอินพุตเป็น-1ค่าอินพุตที่ซ้ำกันจะถูกทิ้ง ( $) ด้านบนของสแต็กจะถูกส่งออกเป็นจำนวนเต็ม ( .) และโปรแกรมหยุดทำงาน ( @)
:" "`! #v_
มิฉะนั้นกระบวนการที่คล้ายกันจะถูกทำซ้ำเพื่อตรวจสอบว่าอินพุตมีค่าน้อยกว่าหรือเท่ากับช่องว่าง ถ้ามันเป็นช่องว่างการควบคุมก็จะลดลงมิฉะนั้นควบคุมหัวขวา
^ ># $ .# @#<
หากเป็นช่องว่างแสดงว่ามีการเปลี่ยนเส้นทางไปทางซ้าย ( <); โปรแกรมหยุด ( @), output ( .) และการเปลี่ยนเส้นทางขวา ( >) ถูกข้ามโดยใช้#; แต่การกำจัดจะดำเนินการเพื่อลบพื้นที่ออกจากสแต็ก ในที่สุดมันจะถูกเปลี่ยนเส้นทางเพื่อเริ่มต้นการดำเนินการถัดไป ( ^)
:","`#^_
หากไม่ใช่พื้นที่กระบวนการเดียวกันจะใช้ในการแยกถ้ามันอยู่ใน[+, *]หรือ[-, \]ไปทางขวาและขึ้นตามลำดับ
>~ "*"`#v_&*>
^ >&+
สำหรับ[+, *]มันถูกแบ่งออกอีกครั้งเพื่อตรวจสอบไม่ว่าจะเป็นหรือ+ *หาก+ถูกนำไปยังหมายเลขถัดไปคืออินพุต ( &) และถูกเพิ่ม ( +) การควบคุมจะล้อมรอบและถูกเปลี่ยนเส้นทางไปยังเส้นทางหลักสำหรับอักขระถัดไป หากเป็นเช่น*นั้นอินพุต ( &) และทวีคูณ ( *) จากนั้นจะล้อมรอบโดยตรง
/& _ #`&# "-"$# -#<
สำหรับการ[-, \]ที่จะเริ่มต้นด้านซ้ายหัวขวา #'s ข้ามตัวละครหลังจากที่พวกเขาเพื่อให้เส้นทางที่เริ่มต้น"-"`_ซึ่งก็กำหนดว่ามันเป็นหรือ- /หากเป็นเช่น/นั้นระบบจะปล่อยให้อินพุต ( &) และหาร ( /) ต่อไป หากเป็นเช่น-นั้นหัวจะถูกต้องให้ข้ามอักขระอีกครั้งเพื่อดำเนินการ&"-"$-ส่งผลให้มีการป้อนตัวเลข ( &) -อักขระที่ถูกผลักลงบนสแต็กแล้วละทิ้ง ( "-"$) จากนั้นจึงลบการคำนวณ ( -) การควบคุมจะถูกเปลี่ยนเส้นทางกลับไปยังเส้นทางหลัก