Компьютерное моделирование физических явлений. Малютин В.М - 135 стр.

UptoLike

Attributes[g] = Listable;
TableForm[g[board, livingNghbrs[board]]]
g[1, 4] g[1, 3] g[0, 4] g[1, 4]
g[1, 5] g[0, 6] g[1, 3] g[0, 5]
g[1, 3] g[1, 3] g[0, 3] g[0, 4]
g[0, 6] g[0, 4] g[0, 4] g[1, 3]
Используя правила update с матрицами board и livingNghbrs, увидим, что каждая
клетка в board обновляется в соответствии с условиями жизни и смерти
update[1, 2] := 1;
update[_, 3] := 1;
update[_, _] := 0;
Attributes[update] = Listable;
TableForm[update[board, livingNghbrs[board]]]
0 0 0 0
1 1 1 0
0 0 0 0
1 1 1 0
Несмотря на то, что три правила обновления перекрываются друг другом, никаких
конфликтов в процессе работы не возникает. Перед действием правил общего характера
Mathematica сначала использует правила с определенными значениями. Например,
несмотря на то, что живая клетка с двумя живыми соседями будет удовлетворять и первому
и третьему правилам update, будет применено первое правило, потому что оно для этого
случая более приемлемо. Похожим образом, несмотря на то, что любая клетка, имеющая
трех соседей, удовлетворяет второму и третьему правилам, будет использовано второе.
Третье правило является более общим, чем два первых, и поэтому используется только
тогда, когда не действуют остальные.
4. Решетка изменяется до тех пор, пока популяция клеток не становится статичной или пока
не пройдено заданных временных шагов t. Для этого используем анонимную функцию
update[#, livingNghbrs[#]]& в FixedPointList. Здесь # представляет конфигурацию решетки.
evolution = FixedPointList[update[#,livingNghbrs[#]]&,
initconfig, t]]
Запуск и получение результатов
Из вышеприведенных фрагментов кода составляется программный модуль LifeGame c
аргументами s и t. Для этого применяется функция Module c локальными переменными
initconfig, livingNghbrs и update.
Для просмотра в табличной форме для s=4 и t=3:
LifeGame[4,3] //TableForm
Для вывода графических результатов применим нижеследующий код:
ShowLife[list_,opts___Rule]:=Map[
135