私は mathematica で人生ゲームのプログラムを書いていますが、セルの何パーセントかに再生規則を適用できるようにする必要があるという注意点があります。MapAt を使用して新しい方法を試してみたいのですが、liveNeighbors は機能しません。要素ごとに、そして私が以前に行ったことを正確に行わずにそれを修正する方法を考えることはできません(多くの面倒なインデックス作成)、誰か提案はありますか? (これは、以下にリストされている古い方法よりも効率的であると想定しています。そうでない場合は、私に知らせてください。私はただの初心者です!)。
私がやろうとしていること:
Map[ArrayPlot,FixedPointList[MapAt[update[#,liveNeighbors[#]]&,#,coords]&,Board, 1]]
私がすでに行ったこと:
LifeGame[ n_Integer?Positive, steps_] := Module [{Board, liveNeighbors, update},
Board = Table [Random [Integer], {n}, {n}];
liveNeighbors[ mat_] :=
Apply[Plus,Map[RotateRight[mat,#]&,{{-1,-1},{-1, 0},{-1,1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}}]];
update[1, 2] := 1;
update[_, 3] := 1;
update[ _, _] := 0;
SetAttributes[update, Listable];
Seed = RandomVariate[ProbabilityDistribution[0.7 UnitStep[x] + 0.3 UnitStep[x - 1], {x, 0, 1, 1}], {n, n}];
FixedPointList[Table[If[Seed[[i, j]] == 1,update[#[[i, j]], liveNeighbors[#][[i, j]]],#[[i, j]]], {i, n}, {j, n}]&, Board, steps]]]
ありがとう!