该程序将解析332682811
为 little-endian base-9 整数并以 base-10 打印。
Befunge 解释二维网格(或圆环,取决于版本)上的指令,指令指针可以在二维中自由移动。这个程序是单行的,所以指令指针只向前和向后移动。
9332682811
将这些数字单独推送到 Befunge 的值堆栈中,然后以下指令执行一个简单的循环。在循环的正常迭代中,情况如下所示:
Instructions Meaning Top stack values
9332682811>\#+:#*9-#\_$.@
> Set the instruction pointer to travel a b
to the right.
\ Swap the top 2 values on the stack. b a
#+ Nothing, since # means b a
skip the next instruction.
: Duplicate the top value on the stack. b a a
9 Push 9. b a a 9
- Pop two values and push their difference. b a (a-9)
_ Pop the top value and set the instruction b a
pointer traveling right if the value is 0
or left otherwise.
\ Swap the top 2 values. a b
9 Push 9. a b 9
* Pop two values and push their product. a (b*9)
+ Pop two values and push their sum. (b*9 + a)
> Set the instruction pointer traveling
right again.
因此,除非迭代开始时堆栈上的第二个值是 9,否则迭代会弹出两个值b
并a
推送b*9 + a
.
如果第二个值为9,则循环终止并打印最高值:
Instructions Meaning Top stack values
9332682811>\#+:#*9-#\_$.@
_ Pop the top value and set the instruction b a
pointer traveling right if the value is 0
or left otherwise.
$ Discard the top value. b
. Pop and print the top value.
@
所以,总而言之,程序推送一堆数字并反复替换和a
直到它达到 9,信号停止。这是一个基数为 9 的转换器。b
b*9+a
如果您尝试使用另一个基本转换器来验证这一点,请确保您获得正确的字节顺序。332682811
是小端的,所以你可能需要反转它。