Итак, по сути, я пишу этот сценарий PHP для Game of Life. Мой вывод дурак, и я не могу понять это!
Вся схема состоит из 2-мерного массива, называемого $ world, в котором каждому значению соответствует 2-ячеечная ячейка, которая может быть 1 или 0 (живой или мертвый). Каждая ячейка имеет 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 такими состояниями. Кажется, что правила не применяются правильно!