我正在用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 -.-
答案 0 :(得分:7)
输入为4
和3
,以字节为单位。输入为ASCII字符,因此值为52和51。
第一个输入减少了8,6次,所以52 - 48 = 4。
第二个输入被添加到第一个输入,所以4加51 = 55。
55写入输出,即ASCII 7
。
程序总结了两个ASCII数字。
JavaScript解释器完全正确。您正在查看第一个寄存器,该寄存器保存字节值55
,但输出框显示7
,即ASCII字符。