小さな生命の宇宙では、すべての側面を包み込むようにする (トロイダル宇宙を作る) のはよくあることですが、これにはダブル バッファリングが必要です。あなたの場合、これには 3KB の RAM が必要ですが、2KB しかありません。
ラップしない場合は、ユニバース全体をダブルバッファリングする必要はありません。計算への入力としてセルを使用し終える前に、セルを上書きしないようにする必要があります。
ユニバースが従来のビットマップとしてレイアウトされているとします。一連の行がメモリ内で順番に配置されるものとして扱います。ユニバースに 0 から 3 までの番号が付けられた 4 つの行があるとします。
0
1
2
3
4
...
次の世代を計算すると、行 3 の新しいバージョンは、行 2、3、および 4 (空白) を使用して計算されます。行 4 の上に行 3 の新しいバージョンを書き込むことができます。同様に、行 1、2、3 から新しい行 2 を計算し、それを行 3 の上に書き込みます。これは、行 2 の計算後にそのデータが不要になるためです。新しい行 1 は、行 0、1、2 から計算され、行 2 に上書きされます。
これは、追加の 1 行分のメモリのみが必要であることを意味します。97*128 ビットは 1552 バイトです。
欠点は、ユニバースがメモリをスクロールすることであり、これに対処するための何らかのメカニズムが必要です。計算のたびに元の位置にコピーするか (これは遅い)、メモリ内の任意の位置から表示できるようにして、計算システムと表示システムが上位アドレスから下位アドレスにラップアラウンドできるようにします。