リアルなセルラーオートマトンは、コンウェイのゲームオブライフに似たセルラーオートマトンであり、(理論的に)無限大の正方形グリッドで動作します。 。
ただし、これらのLike-likeバージョンは重要な点で異なります。特定のセルが生き残るためのルールと、特定のセルが次世代に生き残るためのルールです。
たとえば、古典的なGame of Lifeはルールを使用しますB3/S23
。つまり、新しいセルを生成するには3つの生きたセルが必要であり、生き残るには2つまたは3つの生きている隣人が必要です。この挑戦のために、我々は隣人がそれ自身を含まないので、各セルがちょうど8つの隣人を持っていると仮定します。
タスクには、開始構成、出生ルール、生存ルール、および正の整数(実行する世代数)が与えられ、可能な限り短いコードで指定された世代数のルールを使用して、Life-likeオートマトンをシミュレートします。最初の構成は、正方行列/ 2次元配列または複数行の文字列になりますが、選択できます。その他は、合理的な形式と方法で提供されます。
たとえば、出生規則が12345678
(任意の生きている隣人)である場合、生存規則は2357
あり、開始構成は
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
次の2世代は
Generation 1: Generation 2:
0 0 0 0 0 1 1 1 1 1
0 1 1 1 0 1 1 0 1 1
0 1 0 1 0 1 0 1 0 1
0 1 1 1 0 1 1 0 1 1
0 0 0 0 0 1 1 1 1 1
与えられた世代数が10だった場合、出力は次の行に沿ったものになります。
0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
入力行列で指定された範囲外で発生する変更を処理する必要はありませんが、行列外のすべてのセルは死んでいます。したがって、入力マトリックスは、言語がサポートできる最大値まで、任意のサイズにすることができます。世代間でボードを出力する必要はありません。
これはコードゴルフなので、最短のコードが優先されます。
テストケース
これらは、B/S
使用される規則を示すために表記法を使用します
B2/S2
、generations = 100
構成:
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
出力:
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
B1357/S2468
、generations = 12
構成:
1 0 1 0 1 0
0 1 1 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
1 1 1 1 1 0
0 1 1 0 0 1
出力:
0 1 0 0 0 0
0 1 1 1 1 0
0 1 0 1 1 0
1 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 0 0
さらにテストケースを生成する必要がある場合は、この素晴らしいシミュレータを使用できます。ボードサイズを制限してください