我正在用 Python 编写 Brainfuck 解释器,我目前正在测试这段代码:
,>++++++[<-------->-],[<+>-]<.
使用此输入:
43
波兰维基百科说结果应该是 7,但这里有些地方不对。我应该如何对待输入?作为 4 和 3 还是作为:“4”和“3”(52 和 51)? 如果我将输入字符视为整数,则结果为 -41,因为在第一个循环后 [0] 为 -44,[1] 为 0,然后 [1] 变为 3,我们将 3 添加到 -44,因此结果为 -41 .
另一方面,如果我将输入字符视为 ASCII 码,那么在第一个循环之后 [0] 是 4,[1] 是 0,然后 [1] 变成 51,我们将 51 加到 4,所以结果是 55 .(这个 JavaScript 解释器也给出结果 55:https://www.nayuki.io/page/brainfuck-interpreter-javascript)
但是,我下载了一些用 C 编写的解释器,它给出了结果 7,与维基百科告诉的一样......所以我很困惑。有那个翻译:http://pastebin.com/aasxLppa , 这个解释器也给出了结果 7: brainfuck.tk -.-
最佳答案
输入是 4
和 3
,以字节表示。输入为 ASCII 字符,因此值为 52 和 51。
第一个输入递减 8、6 次,所以 52 - 48 = 4。
第二个输入与第一个输入相加,因此 4 加 51 = 55。
55 写入输出,即 ASCII
7
。
程序对两个 ASCII 数字求和。
JavaScript 解释器是完全正确的。您正在查看第一个寄存器,它保存字节值 55
,但是输出框显示 7
,ASCII 字符。
关于python - Brainf*ck 输入解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16743726/