つまり、基本的に、私はこの Game of Life PHP スクリプトを書いてきました。私の出力はおかしくて、私はそれを理解することはできません! スキーム全体は $world と呼ばれる 2 次元配列で構成され、各値は 1 または 0 (生きているか死んでいるか) の 2 状態のセルに対応します。各セルには 8 つの隣接セルがあります。システムの次の状態を計算するルールは次のとおりです。
- 生きている隣人が 2 ~ 3 人 (1 の場合) いる場合、次のターンも生きています。
- そうでなければ、あなたは死んでいます。
私の実装は次のとおりです: (注: $j_minus
、$i_plus
などは などを参照し$j-1
ますが、エッジを考慮に入れます)
for($i=0;$i<$size;$i++)
{
for($j=0;$j<$size;$j++)
{
if( ($world[$j_minus][$i] + $world[$j_plus][$i] + $world[$j][$i_minus] + $world[$j][$i_plus]+$world[$j_minus][$i_minus]+$world[$j_minus][$i_plus]+$world[$j_plus][$i_minus]+$world[$j_plus][$i_plus]) > 3 )
{
$new_world[$j][$i]=0;
}
else if( ($world[$j_minus][$i] + $world[$j_plus][$i] + $world[$j][$i_minus] + $world[$j][$i_plus]+$world[$j_minus][$i_minus]+$world[$j_minus][$i_plus]+$world[$j_plus][$i_minus]+$world[$j_plus][$i_plus])>= 2 )
{
$new_world[$j][$i]=1;
}
else {$new_world[$j][$i]=0;}
}
}
これらのルールが適用され、$new_world がシステムの新しい状態になった後、次のように配列を画面に出力します。
for($i=0;$i<$size;$i++)
{
for($j=0;$j<$size;$j++)
{
echo $new_world[$i][$j]." ";
}
echo "</p>";
}
の初期状態に関係なく、私が得るのは、$world
線と大きなブロックでいっぱいの完全に停滞した状態か、そのような状態が 2 ~ 3 ある間の振動です。ルールが正しく適用されていないようです。