Notes

Chapter 3: The World of Simple Programs

Section 2: More Cellular Automata


Implementation of totalistic cellular automata

To handle totalistic rules that involve k colors and nearest neighbors, one can add the definition

CAStep[TotalisticCARule[rule_List, 1], a_List] := rule[[-1-(RotateLeft[a] + a + RotateRight[a]) ]]

to what was given on page 867. The following definition also handles the more general case of r neighbors:

CAStep[TotalisticCARule[rule_List, r_Integer], a_List] := rule[[-1-Sum[RotateLeft[a, i], {i, -r, r}] ]]

One can generate the representation of totalistic rules used by these functions from code numbers using

ToTotalisticCARule[num_Integer, k_Integer, r_Integer] := TotalisticCARule[IntegerDigits[num, k, 1 + (k-1)(2r+1)], r]

From Stephen Wolfram: A New Kind of Science [citation]