Brainf * ck输入解释

时间:2013-05-24 21:13:00

标签: python interpreter brainfuck

我正在用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 -.-

1 个答案:

答案 0 :(得分:7)

输入为43,以字节为单位。输入为ASCII字符,因此值为52和51。

  • 第一个输入减少了8,6次,所以52 - 48 = 4。

  • 第二个输入被添加到第一个输入,所以4加51 = 55。

  • 55写入输出,即ASCII 7

程序总结了两个ASCII数字。

JavaScript解释器完全正确。您正在查看第一个寄存器,该寄存器保存字节值55,但输出框显示7,即ASCII字符。