python - Brainf*ck 输入解释

标签 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 -.-

最佳答案

输入是 43,以字节表示。输入为 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/

相关文章:

python - 将两列 Pandas 列表彼此分开

Python:交叉索引numpy数组

python - 在 Python 脚本中运行 bash 命令

programming-languages - 初级程序员可以使用哪种语言来实现解释器?

math - 如何在brainfuck中读取多位数字

编译器 C 去 Brainfuck(骚扰教授)?

python - IPython 笔记本和 SQL : 'ImportError: No module named sql' when running '%load_ext sql'

python 连接到 Azure 数据库

r - 分支预测如何影响 R 中的性能?

python - '~' 在 python 中是什么意思?