Python でBefungeインタープリターを作成しようとしていますが、現在の問題はp
コマンドです。基本的に、ファイルの各行にある文字列のリストがあり、2D 座標系を使用して自分の位置を追跡します。外側のリストはy
で、各文字列内の位置は ですx
。
問題は次のとおりです。p
コマンドは座標と値をスタックからポップします。次に、その位置の値に対応する ASCII 文字を配置します。残念ながら、Python では、リストと文字列をインデックスで展開するのは非常に困難です。更新されたデータに合わせて、リストとその中の文字列を展開する最も効率的な方法が必要です。2 つの理由で、特定のサイズに事前に展開することはできません。理論的には無限のメモリ割り当て (チューリングの完全性のために必要) と、プログラムがその端を超えて展開されていない場合は、プログラムの端でラップ (事前に展開された削除)それを効率的に行う能力)。
TL;DR: リストとその中のすべての文字列を拡張して、特定の 2D 座標 (外側のリストは y、内側のリストは x、つまりprog[y][x]
) に到達して含めるための最良/最も効率的な方法を見つける必要がありますが、できません。いくつかの複雑で説明が難しい理由により、事前に割り当てられています。
よくわからなかったようですが、このp
コマンドは実行中の Befunge コードを直接変更します。したがって、プログラムは必要に応じてデータにアクセスして実行できる必要があるため、プログラム自体の外部にデータを保存することはできません (前述のとおり、Befunge は奇妙です)。