私が昨日始めた「めちゃくちゃ」なプロジェクトの 1 つは、Befungeインタープリターでした。エッジケースを除いて、ほとんどの場合動作しています。
私は怠け者になり、これでbefungeプログラムを読むことにしました:
char[][] program = File.ReadAllLines(args[0]).Select(x => x.ToCharArray()).ToArray();
後で自分のためにもっと作品を作ることはわかっていましたが、他の部分に取り掛かりたかったので、そのままにしておきました。今は後で、program
長方形ではないという事実を修正する必要があります。私がこのbefungeプログラムを持っていたとしましょう:
v v <
@
> ^
1 行目と 3 行目は 9 文字の長さですが、2 行目はわずか 5 文字です。befunge インタープリターをセットアップした方法ではIndexOutOfBoundsException
、プログラムが終了する前に を取得^
します。長program[1][8]
さprogram[1]
はわずか5です。例外をキャッチしてその周りで踊ろうとする代わりに、余分な文字をchar[,]
使用program
してスペースで埋める方法を作成するにはどうすればよいですか?
最長の行の長さ、行数を特定し、それらを使用して char[,] を作成し、それらをコピーするだけでよいことはわかっていますが、もう少しシンプルでエレガントなものを望んでいます。新しいアプローチの方が優れている場合は、上記の行を破棄しても問題ありません。