2DセルオートマトンWolframバイナリコード
これは、2Dセルオートマトンルールがどのように機能するかと同様の質問です。しかし、そこでの答えは私が探しているものを私に提供しませんでした。具体的には、これらの2Dセルオートマトンフォームをレンダリングできるようにしたいと思います。https://www.wolframscience.com/nks/p173--cellular-automata/実数と成長ルールを切り替える方法を説明するリファレンスはどこにも見つかりません。1dでは、状況は次のように十分に文書化されています。https://mathworld.wolfram.com/ElementaryCellularAutomaton.htmlしかし、2Dでは、ビットの正確なマッピングはどこにも見つかりません。私は本当にプログラムを作りたいのです。たとえば、番号465を入力すると、Wolframの本からパターン465が描画されます。上でリンクした他のスタック交換の回答は、可能なバイナリマッピングを提供しますが、そこで与えられた方法は、Wolframリファレンスと同じ番号を生成しません。465のバイナリ値は111010001ですが、これはまったく役に立ちません。この特定の形状は、現在正確に1つの隣接セルが占有されているときにセルを追加することに基づいているため、4つの隣接セルのそれぞれに1つずつ、連続して4つの1があると予想すべきではありませんか?そして、これをさらに混乱させるために、最後の2桁は、Wolframページ自体に記載されている説明と入れ替わっているようです...他のStack Overflowの回答から、可能なバイナリマッピングは1つだけではなく、多数あることが明らかです。ルール番号で参照されている写真のガイドがすでに存在することを考えると、実際にそれらの特定のルール番号を使用できるようにしたいと思います。ありがとう。
回答
リンク先のページに記載されている説明は正しいです。
「いずれの場合も、コード番号の基数2桁のシーケンスは、次のようにルールを指定します。最後の桁は、前の手順ですべての隣接セルが白で、それも白だった場合の中央のセルの色を指定します。最後から最後の桁は、すべての隣接セルが白であるが、中央のセル自体が黒である場合に何が起こるかを指定します。次に、前の各桁は、徐々に多くの隣接セルが黒である場合に何が起こるかを指定します。
見逃しているのは、ルール番号が奇数の場合、他の白血球に囲まれた白血球が自然に黒くなるため、空格子が不安定になることです。具体的には、465のように数が4を法として1に合同である(つまり、バイナリ形式が01で終わる)ルールはすべて「ストロービング」です。つまり、空の格子は、連続する各世代ですべて白とすべて黒の間で交互になります。
特に、これは、ルール465が「正確に1つのネイバーが現在占有されているときにセルを追加する」ことに対応できないことを意味します。(これはおそらくルール686、またはバイナリの1010101110になります。)
代わりに、正しくお気づきのように、465はバイナリで111010001に相当します。それぞれ2ビットの5つのグループで記述され、01 11 01 00 01になります。これらの各グループでは、グループの右端のビット$k$ (0から4まで右から左に番号が付けられている)は、白いセルが $k$ 黒の隣人は次の世代で黒になります。黒のセルが次の場合、左端のビットは1です。 $k$ 黒人の隣人は黒のままになります。
これは、このルールの下で、0、2、3、または4つの黒い隣接セルがある場合(右から数えてグループ0、2、3、および4の右端のビットが1であるため)、白いセルが黒になることを意味します。セルに3つの黒の隣接セルがある場合、セルは黒のままになります(左端のビットはグループ3でのみ1であるため)。
実際、このルールを22世代にわたってシミュレートすると、白い背景の1つの黒いピクセルから開始して、リンクされたページの画像と一致する画像が生成されます。
追伸 ルール465は、状態対称ルール558 = 01000101110 2の「ストロービング等価物」であることがわかります。これは、ルール686とは1ビットだけ異なり、「1つの隣接セルが占有されているときにセルを追加し、ちょうど1つのネイバーが空の場合のセル」。
単一のセルから開始すると、ルール558と686は同じように進化するようです。これは、この開始点から、正確に3つの隣接セルを持つライブセルを生成しないためです。したがって、偶数世代では、ストロボルール465も両方と同じように見えます。