Posted Sunday November 20 2022.

Here’s a nice thing I learned: Conway’s Game of Life can be represented coupled map lattice! Here’s how (in Python3): define the following 3x3 array of floats, the convolution kernel,

```
= [
K 1, 1, 1],
[1, 8, 1],
[1, 1, 1]
[ ]
```

This corresponds to a coupling parameter = 1/2 in the coupled map lattice. Next define the nonlinear activation function,

```
def f(u: int) -> int:
if u == 3 or u == 10 or u == 11:
return 1
else:
return 0
```

The idea is that we are given an array `U`

of 1s and 0s, which is the state of Game of Life, and at each point we count up the number of live neighbors, +8 if the center is alive and +0 otherwise, and store these values in a new array `V`

of the same shape. This corresponds to the Game of Life as follows:

- center dead, 3 live neighbors ⇔ v = 3
- center alive, 2 live neighbors ⇔ v = 10
- center alive, 3 live neighbors ⇔ v = 11

You can represent other cellular automata like this too - see arXiv.1809.02942. I realized this after playing around with neuralpatterns.io (**flashing colors warning**) that lets you choose the kernel and activation function in-browser.