我正在尝试用 Python 编写Befunge解释器,而我现在的问题是p
命令。基本上,我有一个字符串列表,它们是文件的每一行,我使用二维坐标系来跟踪我的位置。外部列表是y
,每个字符串中的位置是x
。
问题是这样的:该p
命令从堆栈中弹出坐标和一个值。然后它将对应于该值的 ASCII 字符放在该位置。不幸的是,在 Python 中,列表和字符串很难按索引展开。我需要最有效的方法来扩展列表和其中的字符串以适应更新的数据。我不能将其预扩展为特定大小,原因有两个:理论上无限的内存分配(图灵完备性需要)以及如果程序没有扩展超过该边缘,则在程序的边缘包装(预扩展删除有效地做到这一点的能力)。
TL;DR:我需要找到最佳/最有效的方法来扩展列表以及其中的所有字符串以达到并包含特定的 2D 坐标(外部列表是 y,内部列表是 x,即prog[y][x]
)我不能由于几个复杂且难以解释的原因而将其预先分配。
看起来我不太清楚,该p
命令直接修改了正在运行的 Befunge 代码。因此,我不能将数据存储在程序本身之外,因为程序需要能够在必要时访问和运行它(正如我所说,Befunge 很奇怪)。