Befunge- 37 x 5 = 185 38 x 3 = 114个字符
由于Befunge不支持浮点,因此只能使用整数。
&v /& _ #`&# "-"$# -#< v
>~:0`!#v_:" "`! #v_:","`#^_"*"`#v_&*>
^ ># $ .# @#< >&+
说明
Befunge最大的区别在于,它不是像大多数语言一样线性的指令集;它是单字符指令的二维网格,控制可以在任何方向流动。
第一个&仅输入第一个数字。该v和>然后重定向到控制在第二行的主路径。
~:0`!#v_
这将输入一个字符(~),将其复制(:),将零压入堆栈(0),弹出顶部的两个元素,并确定第二个元素是否大于第一个元素(` 我很惊讶您无法使用```来获取代码反引号(。),反转顶部元素(!)的真实性,如果为零则向右,否则向下(#v_)。
基本上,它检查输入是否-1不再代表输入。
># $ .# @
如果输入为-1原值,则丢弃重复的输入值($),将堆栈的顶部作为整数(.)输出,并暂停程序(@)。
:" "`! #v_
否则,重复类似的过程以确定输入是否小于或等于空格。如果是空格,则控制权下降,否则控制权向右移动。
^ ># $ .# @#<
如果是空格,则将其向左重定向(<); 使用跳过程序暂停(@),输出(.)和右重定向(>)#。但是将执行丢弃操作以从堆栈中删除空间。最后,将其重定向到下一个执行(^)。
:","`#^_
如果它是不一样的过程来划分,如果它是在一个空间[+, *]或[-, \]在朝好的方向发展和同比分别。
>~ "*"`#v_&*>
^ >&+
因为[+, *]它再次被拆分以确定它是a +还是a *。如果+向下,则输入下一个数字&(+),然后将它们加在一起(),然后该控件回绕并重定向到下一个字符的主路径。如果是,*则输入(&)并乘以(*),然后直接回绕。
/& _ #`&# "-"$# -#<
因为[-, \]它从右边的标题开始。所述#的跳过字符之后他们因此初始路径是"-"`_它简单地确定是否是-或/。如果是,/则继续输入(&)并除以(/)。如果是,-则它向右移动,再次跳过字符,以使其执行,&"-"$-结果是输入数字(&)将该-字符压入堆栈,然后丢弃("-"$),然后计算减法(-)。然后将控件重定向回主路径。