#  Triangular Automata
The 256 Elementary Cellular Automata of the 2D Plane

Paul Cousin
https://orcid.org/0000-0002-3866-7615
France

###### Abstract

Triangular Automata (TA) stands for cellular automata in the triangular grid.
This work focuses on the simplest type of TA called Elementary Triangular
Automata (ETA). They are argued to be the two-dimensional counterpart of
Wolfram’s Elementary Cellular Automata. Conceptual and computational tools for
their study are presented along with an initial analysis. The paper is
accompanied by a website where the results can be explored interactively. The
source code is available in the form of a Mathematica package.

Keywords — cellular automata, triangular grid, dynamical systems, complexity.

##  1 Preamble

This paper comes with a website where you can interactively explore the 256
cellular automata presented here (including through different kinds of
animations), as well as an easy-to-use Mathematica package.

  1. •

Website: paulcousin.github.io/triangular-automata

  2. •

Package demonstration: paulcousin.github.io/triangular-automata-mathematica

##  2 Introduction

Cellular automata in the triangular grid, or Triangular Automata (TA) for
short, have already been studied in a few papers [1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15]. This work will focus on a natural subset of TA called
Elementary Triangular Automata (ETA).

Figure 1: The triangular grid

ETA cells hold only binary states, each cell will thus either be:

  1. •

“alive” and colored purple , with a state $s=1$

  2. •

“dead” and colored white  with a state $s=0$

ETA rules determine the future state of a cell based on its current state and
the states of its neighbors, regardless of their orientation. This results in
only 8 possible local configurations.

0

1

2

3

4

5

6

7

Figure 2: All possible local configurations

This paper uses a graph-theoretical framework developed in a previous work on
Graph-Rewriting Automata[16]. The triangular grid will here be considered as a
graph (Figure 3). This graph must be expanded at each time step to simulate an
infinite grid. The region of influence of a single cell grows in hexagonal
layers (Figure 3(a)). This is thus the most efficient way to expand the graph
as well. How to do it in practice will be detailed in Section 4.2.

(a) Grid and layers

(b) Corresponding graph

Figure 3: Structure of the triangular grid

It is useful to see the triangular grid as a graph because computing the
evolution of ETA is made quite easy by properties of its adjacency matrix
$\mathcal{A}$ and statevector $\mathcal{S}$. Every vertex $v$ of this graph
will hold a state $s(v)$. The neighborhood $N(v)$ of a vertex is defined as
the set of its adjacent vertices.

$\begin{array}[]{ccc}\mathcal{A}_{ij}=\begin{cases}1&\text{ if }v_{i}\in
N(v_{j})\\\ 0&\text{
otherwise}\end{cases}&&\mathcal{S}_{i}=s(v_{i})\in\\{0,1\\}\end{array}$ (1)

The configuration $c(v)$ of a vertex is a number which, when they are indexed
as in Figure 2, can be expressed as follows:

$c(v)=4\times s(v)+\sum_{i\in N(v)}s(i)$ (2)

The space of possible ETA rules is finite. For each one of the 8
configurations, a rule must specify whether the vertex will be dead or alive
at $t+1$. Consequently, there are only $2^{8}=256$ possible rules. For this
reason, ETA can be seen as the two-dimensional counterpart of Wolfram’s 256
Elementary Cellular Automata[17, 18]. Furthermore, the triangle is the regular
polygon tiling 2D space with the smallest number of neighbors per cell. ETA
are thus the most basic 2D cellular automata and have a fundamental aspect in
this regard.

Each rule $R$ is a map from configuration space to state space.

$\displaystyle R:\\{0,1,2,3,4,5,6,7\\}\rightarrow\\{0,1\\}$ (3) $\displaystyle
R\big{(}c_{t}(v)\big{)}=s_{t+1}\big{(}v\big{)}$

Each rule can be labeled by a unique rule number $n$ (see Equation 4). We will
use the labeling system which was independently proposed in [15] and [16],
since it must be somewhat natural and because it has useful properties. This
system, inspired by the Wolfram code [17], is such that a rule number in its
binary form displays the behavior of the rule. Starting from the right, its
digits indicate the future state for each configuration as they have been
ordered previously. Figure 4 shows the example of rule 181.

$n=\sum_{i=0}^{7}2^{i}R(i)$ (4)

Figure 4: Rule $181=1011,0101_{2}$

##  3 Behavior

Before going into the details of how to compute these automata, we can take a
look at how they behave. In this section, a preliminary study of ETA will be
presented to motivate a future, more in-depth analysis. It is of particular
interest to see what happens to a single living cell under different ETA rules
so, unless otherwise noted, the following figures come from this starting
point.

###  3.1 Beauty

One of the most striking aspects of these automata is their aesthetic quality,
which cannot be better illustrated than by a few selected examples.

Figure 5: Rule 89 at $t=200$ Figure 6: Rule 57 at $t=320$ Figure 7: Rule 73 at
$t=256$ Figure 8: Rule 62 at $t=256$

###  3.2 Chaos

Given the existing literature on cellular automata, it is quite expected to
see some of these rules behave chaotically. The example of rule 53 confirms
it. Starting from two randomly generated 64 layers wide grids that are
completely similar except for the central cell which is alive in (1) and dead
in (2), the trajectories strongly diverge.

(1) at $t=0$

(2) at $t=0$

(1) at $t=512$

(2) at $t=512$

Figure 9: Chaotic behavior of rule 53

Figure 10: Rule 53

###  3.3 Fractals

Some ETA rules produce remarkable scale-free structures.

Figure 11: Rule 65 at $t=512$ Figure 12: Rule 106 at $t=510$

Figure 13: Rule 50 at $t=352$

###  3.4 Space-Time

Similar to the way Elementary Cellular Automata [17, 18] are most often
represented, the evolution of an ETA can be displayed in one single plot.
Here, an instant is two-dimensional, so adding the dimension of time creates a
3D structure. In these space-time plots, time flows downward. The successive
grids are stacked beneath each other, starting from the initial conditions at
the top. To avoid the infinite planes created by an alive environment, we can
display only the cells that have the opposite state to it at each time step. A
lot of information is therefore lost. We do not see most of the internal
structure and we cannot know the state of the environment. Nevertheless, this
representation helps visualize some properties of ETA that are difficult to
notice otherwise. For instance, certain rules create 3D space-time fractals.

Figure 14: Space-time plot of rule 10 up to $t=512$ (perspective)

Figure 15: Space-time plot of rule 10 up to $t=512$ (orthographic)

###  3.5 Self-Reproduction

As mentioned in [11], one of the original motivations for the development of
cellular automata was to create a mathematical model of self-reproduction.
Interestingly, 4 of the 256 ETA rules naturally reproduce any finite pattern
given as initial conditions: rules 85, 90, 165 and 170. A proof of self-
reproduction based on path counting already exists for rule 170 [11].
Similarly spirited proofs could probably be proposed for the others.

t | rule 85 | rule 90 | rule 165 | rule 170
---|---|---|---|---
0 |  |  |  |
16 |  |  |  |
32 |  |  |  |
48 |  |  |  |
112 |  |  |  |
Table 1: Pattern self-reproduction from a recognizable starting point

###  3.6 Noise

Some rules seem to generate a pretty good noise. For example, if we pick a
simple starting point without symmetries, rule 37 will usually turn it into an
expanding disk with a random-looking interior.

Figure 16: Simple asymmetric starting point Figure 17: Result at $t=512$ with
rule 37

###  3.7 Textures

Organic textures can be obtained by applying other rules to this pseudorandom
grid.

Figure 18: Rule 204 at at $t=32$ starting from Figure 17 Figure 19: Rule 252
at at $t=32$ starting from Figure 17 Figure 20: Rule 100 at at $t=64$ starting
from Figure 17 Figure 21: Rule 108 at at $t=512$ starting from Figure 17

###  3.8 Boring Rules

There is an identity rule which leaves any grid unchanged: rule 240.

Figure 22: Rule 240

And a negative rule that swaps alive and dead states: rule 15.

Figure 23: Rule 15

###  3.9 Twins

A simple procedure can be followed to find the evil twin of a rule that has
the same effect but in the negative world. To find it, take the number in its
binary form (with the leading zeros needed for the number to be 8 digits
long), swap ones and zeros and read it backwards. Let us take rule 214 as an
example.

First, find the binary form of the rule number, |  | $214=11010110_{2}$
---|---|---
then swap ones and zeros |  | $00101001_{2}$
and finally reverse it. |  | $10010100_{2}=148$

(a) rule 214 from one alive cell at $t=128$

(b) rule 148 from one dead cell at $t=128$

Figure 24: Twin rules

##  4 Implementation

###  4.1 Tools

  1. 1.

$\diamond$ here represents an operator that joins matrices corner to corner.

$\begin{pmatrix}{\color[rgb]{.75,0,.25}a}\end{pmatrix}\diamond\begin{pmatrix}{\color[rgb]{1,0,0}b}&{\color[rgb]{1,0,0}c}\\\
{\color[rgb]{1,0,0}d}&{\color[rgb]{1,0,0}e}\end{pmatrix}\diamond\begin{pmatrix}{\color[rgb]{1,.5,0}f}&{\color[rgb]{1,.5,0}g}&{\color[rgb]{1,.5,0}h}\end{pmatrix}=\begin{pmatrix}{\color[rgb]{.75,0,.25}a}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}\\\
{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{1,0,0}b}&{\color[rgb]{1,0,0}c}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}\\\
{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{1,0,0}d}&{\color[rgb]{1,0,0}e}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}\\\
{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{.75,.75,.75}0}&{\color[rgb]{1,.5,0}f}&{\color[rgb]{1,.5,0}g}&{\color[rgb]{1,.5,0}h}\end{pmatrix}$
(5)

  2. 2.

${}^{\searrow}\,$ shifts diagonally the elements of a matrix and places the
last row and column first.

$\begin{pmatrix}a&b&c&{\color[rgb]{1,.5,0}d}\\\
e&f&g&{\color[rgb]{1,.5,0}h}\\\
{\color[rgb]{1,0,0}i}&{\color[rgb]{1,0,0}j}&{\color[rgb]{1,0,0}k}&{\color[rgb]{.75,0,.25}l}\end{pmatrix}^{\searrow}=\begin{pmatrix}{\color[rgb]{.75,0,.25}l}&{\color[rgb]{1,0,0}i}&{\color[rgb]{1,0,0}j}&{\color[rgb]{1,0,0}k}\\\
{\color[rgb]{1,.5,0}d}&a&b&c\\\ {\color[rgb]{1,.5,0}h}&e&f&g\\\ \end{pmatrix}$
(6)

  3. 3.

@ will be an operator applying a function to every element of a matrix.

$f\text{@}\begin{pmatrix}a&b\\\ c&d\end{pmatrix}=\begin{pmatrix}f(a)&f(b)\\\
f(c)&f(d)\end{pmatrix}$ (7)

  4. 4.

$\mathbb{I}_{i}$ is the $i\times i$ identity matrix. $\mathbb{S}_{i}$ will be
a $i\times(i+1)$ “stairs” matrix.

$\mathbb{I}_{1}=\begin{pmatrix}{\color[rgb]{.75,0,.25}1}\end{pmatrix}\qquad\quad\;\mathbb{I}_{2}=\begin{pmatrix}{\color[rgb]{.75,0,.25}1}&0\\\
0&{\color[rgb]{.75,0,.25}1}\end{pmatrix}\qquad\quad\;\mathbb{I}_{3}=\begin{pmatrix}{\color[rgb]{.75,0,.25}1}&0&0\\\
0&{\color[rgb]{.75,0,.25}1}&0\\\
0&0&{\color[rgb]{.75,0,.25}1}\end{pmatrix}\qquad\quad\;\ldots\quad$ (8)
$\mathbb{S}_{1}=\begin{pmatrix}{\color[rgb]{.75,0,.25}1}&{\color[rgb]{.75,0,.25}1}\end{pmatrix}\qquad\mathbb{S}_{2}=\begin{pmatrix}{\color[rgb]{.75,0,.25}1}&{\color[rgb]{.75,0,.25}1}&0\\\
0&{\color[rgb]{.75,0,.25}1}&{\color[rgb]{.75,0,.25}1}\end{pmatrix}\qquad\mathbb{S}_{3}=\begin{pmatrix}{\color[rgb]{.75,0,.25}1}&{\color[rgb]{.75,0,.25}1}&0&0\\\
0&{\color[rgb]{.75,0,.25}1}&{\color[rgb]{.75,0,.25}1}&0\\\
0&0&{\color[rgb]{.75,0,.25}1}&{\color[rgb]{.75,0,.25}1}\end{pmatrix}\qquad\ldots\quad$
(9)

###  4.2 Growing the triangular grid

As mentioned in Section 2, the grid is going to be grown from a single cell by
adding layers. This will be done with a precursor of the adjacency matrix
called the grid matrix $\mathcal{G}$. Up to the third layer, the grid matrix
is better hand-coded. The third matrix $\mathcal{G}_{3}$ can be seen in Figure
25. The subsequent layers will follow a repeating pattern.

$\begin{pmatrix}\begin{matrix}0&{\color[rgb]{.75,0,.25}1}&{\color[rgb]{.75,0,.25}1}&{\color[rgb]{.75,0,.25}1}\end{matrix}&{\color[rgb]{.75,.75,.75}\begin{matrix}0&0&0&0&0&0\end{matrix}}&{\color[rgb]{.75,.75,.75}\begin{matrix}0&0&0&0&0&0&0&0&0\end{matrix}}\\\
{\color[rgb]{.75,.75,.75}\begin{matrix}0&0&0&0\\\ 0&0&0&0\\\
0&0&0&0\end{matrix}}&\begin{matrix}{\color[rgb]{1,0,0}1}&{\color[rgb]{1,0,0}1}&0&0&0&0\\\
0&0&{\color[rgb]{1,0,0}1}&{\color[rgb]{1,0,0}1}&0&0\\\
0&0&0&0&{\color[rgb]{1,0,0}1}&{\color[rgb]{1,0,0}1}\end{matrix}&{\color[rgb]{.75,.75,.75}\begin{matrix}0&0&0&0&0&0&0&0&0\\\
0&0&0&0&0&0&0&0&0\\\ 0&0&0&0&0&0&0&0&0\end{matrix}}\\\
{\color[rgb]{.75,.75,.75}\begin{matrix}0&0&0&0\\\ 0&0&0&0\\\ 0&0&0&0\\\
0&0&0&0\\\ 0&0&0&0\\\
0&0&0&0\end{matrix}}&{\color[rgb]{.75,.75,.75}\begin{matrix}0&0&0&0&0&0\\\
0&0&0&0&0&0\\\ 0&0&0&0&0&0\\\ 0&0&0&0&0&0\\\ 0&0&0&0&0&0\\\
0&0&0&0&0&0\end{matrix}}&\begin{matrix}{\color[rgb]{1,.5,0}1}&0&0&0&0&0&0&0&{\color[rgb]{1,.5,0}1}\\\
0&{\color[rgb]{1,.5,0}1}&{\color[rgb]{1,.5,0}1}&0&0&0&0&0&0\\\
0&0&{\color[rgb]{1,.5,0}1}&{\color[rgb]{1,.5,0}1}&0&0&0&0&0\\\
0&0&0&0&{\color[rgb]{1,.5,0}1}&{\color[rgb]{1,.5,0}1}&0&0&0\\\
0&0&0&0&0&{\color[rgb]{1,.5,0}1}&{\color[rgb]{1,.5,0}1}&0&0\\\
0&0&0&0&0&0&0&{\color[rgb]{1,.5,0}1}&{\color[rgb]{1,.5,0}1}\end{matrix}\end{pmatrix}$

Figure 25: Grid matrix $\mathcal{G}_{3}$ (with layers 1, 2 and 3)

Each layer consists in a sub-matrix and the grid matrix will be :

$\mathcal{G}_{l}=m_{1}\diamond m_{2}\diamond\ldots\diamond m_{l-1}\diamond
m_{l}$ (10)

From $m_{4}$, these sub-matrices become:

$m_{i}=\begin{cases}\mathbb{S}_{\frac{i}{2}}\diamond\mathbb{I}_{(\frac{i}{2}-1)}\diamond\mathbb{S}_{\frac{i}{2}}\diamond\mathbb{I}_{(\frac{i}{2}-1)}\diamond\mathbb{S}_{\frac{i}{2}}\diamond\mathbb{I}_{(\frac{i}{2}-1)}&\text{
if $i$ is even}\\\ \vspace{-2mm}\\\
\left(\mathbb{I}_{\lceil\frac{i}{2}-2\rceil}\diamond\mathbb{S}_{\lceil\frac{i}{2}\rceil}\diamond\mathbb{I}_{\lceil\frac{i}{2}-2\rceil}\diamond\mathbb{S}_{\lceil\frac{i}{2}\rceil}\diamond\mathbb{I}_{\lceil\frac{i}{2}-2\rceil}\diamond\mathbb{S}_{\lceil\frac{i}{2}\rceil}\right)^{\searrow}&\text{
if $i$ is odd}\end{cases}$ (11)

Assuming that $\mathbb{I}_{0}$ is a $0\times 0$ matrix, this pattern actually
holds for $m_{2}$ and $m_{3}$. However, depending on how this is implemented,
coding the first 3 layers by hand might be the best option.

Once the grid matrix is built, it is easy to obtain the adjacency matrix by
turning it into a symmetric matrix as illustrated in Figure 26.

$\begin{pmatrix}\vspace{-.15cm}\includegraphics[width=85.35826pt]{graphics/implementation/half-
matrix.pdf}\end{pmatrix}\rightarrow\begin{pmatrix}\vspace{-.15cm}\includegraphics[width=85.35826pt]{graphics/implementation/full-
matrix.pdf}\end{pmatrix}$

Figure 26: From the grid matrix $\mathcal{G}$ to the adjacency matrix
$\mathcal{A}$

The limit of this series of matrices $\mathcal{A}_{\infty}$ is the adjacency
matrix of the graph corresponding to the infinite triangular grid.

###  4.3 Evolving the state

The environment will be simulated by using two layers around the region of the
influence of our initial structure. If the initial structure is a single
triangle, then the computed grid will contain $t+2$ layers.

Updating the state of the grid will come in four steps.

  1. 1.

First, a layer is added with the same state as the last vertex (both the
grid/adjacency matrix and the state vector must be updated).

  2. 2.

Second, a configuration vector $\mathcal{C}$ is computed ($o$ is the order of
the graph).

$\mathcal{C}=\begin{pmatrix}c(v_{1})\\\ \vdots\\\
c(v_{o})\end{pmatrix}=4\times\mathcal{S}+\mathcal{A}\cdot\mathcal{S}$ (12)

  3. 3.

The state vector $\mathcal{S}$ is then updated as follows.

$\mathcal{S}=R\,\text{@}\,\mathcal{C}$ (13)

  4. 4.

Finally, the state of all vertices of the last layer (created in step 1) is
set to the value of the last vertex of the now penultimate layer. This removes
the artefacts coming from the edges of the computed grid.

Remarks

  1. •

Evolving the state of the grid is where this framework pays off the most.
Steps 2 and 3 are mathematically sufficient if we consider working in an
infinite graph. They would also be the only steps required in a closed grid,
like a triangulated surface [15] for example.

  2. •

For this process to be efficient, it is necessary to encode the grid/adjacency
matrix in a sparse array format.

  3. •

Step 1 can be avoided in the case where the three outermost layers have a
uniform state, which is easy to check.

  4. •

It is useful here to be able to retrieve the number of layers in the graph,
just by knowing its order.

$layer=\frac{1}{6}\Big{(}\sqrt{3(8\,order-5)}-3\Big{)}$ (14)

  5. •

It is also useful to note that each layer $l$ contains $3l$ vertices or cells
(except when $l=0$).

###  4.4 Plotting the result

2D coordinates are required to plot the resulting grid. These can be computed
in a coordinates matrix $\mathcal{K}$. Algorithm 1 can be used to expand
$\mathcal{K}$ from the coordinates of the first vertex, placed at the origin
$\begin{pmatrix}0&0\end{pmatrix}$.

$\mathcal{K}=\begin{pmatrix}x_{1}&y_{1}\\\ x_{2}&y_{2}\\\ x_{3}&y_{3}\\\
\vdots&\vdots\\\ x_{o-2}&y_{o-2}\\\ x_{o-1}&y_{o-1}\\\
x_{o}&y_{o}\end{pmatrix}$ (15)

These coordinates will serve to translate a base triangle whose orientation
depends on the layer it is in.

Layer | Coordinates of the base triangle |  |  | Illustration
---|---|---|---|---
even | $\begin{pmatrix}-\frac{1}{\sqrt{3}}&0\end{pmatrix}$ | $\begin{pmatrix}\frac{1}{2\sqrt{3}}&\frac{1}{2}\end{pmatrix}$ | $\begin{pmatrix}\frac{1}{2\sqrt{3}}&-\frac{1}{2}\end{pmatrix}$ |
odd | $\begin{pmatrix}\frac{1}{\sqrt{3}}&0\end{pmatrix}$ | $\begin{pmatrix}-\frac{1}{2\sqrt{3}}&\frac{1}{2}\end{pmatrix}$ | $\begin{pmatrix}-\frac{1}{2\sqrt{3}}&-\frac{1}{2}\end{pmatrix}$ |
Table 2: Coordinates of the base triangle’s vertices. Algorithm 1 Adding a
layer to the coordinates matrix $\mathcal{K}$

1:if $l$ is odd then $\triangleright$ $l$ is the number of the new layer

2: $step\leftarrow\begin{pmatrix}-\frac{1}{\sqrt{3}}&0\end{pmatrix}$

3:else

4:
$step\leftarrow\begin{pmatrix}-\frac{1}{2\sqrt{3}}&-\frac{1}{2}\end{pmatrix}$

5:end if

6:$\mathcal{K}.append\Big{(}\mathcal{K}\big{[}-3(l-1)\big{]}+step\Big{)}$
$\triangleright$ $\mathcal{K}[-n]\equiv n^{th}$ coords from the end

7:for $i\leftarrow 0,3l-2$ do

8: if $i<\lfloor\frac{l}{2}\rfloor$ then
$step\leftarrow\begin{pmatrix}0&1\end{pmatrix}$

9: else if $i<\lfloor\frac{l}{2}\rfloor+\lceil\frac{l}{2}\rceil$ then
$step\leftarrow\begin{pmatrix}-\frac{\sqrt{3}}{2}&\frac{1}{2}\end{pmatrix}$

10: else if $i<2\lfloor\frac{l}{2}\rfloor+\lceil\frac{l}{2}\rceil$ then
$step\leftarrow\begin{pmatrix}-\frac{\sqrt{3}}{2}&-\frac{1}{2}\end{pmatrix}$

11: else if $i<2\lfloor\frac{l}{2}\rfloor+2\lceil\frac{l}{2}\rceil$ then
$step\leftarrow\begin{pmatrix}0&-1\end{pmatrix}$

12: else if $i<3\lfloor\frac{l}{2}\rfloor+2\lceil\frac{l}{2}\rceil$ then
$step\leftarrow\begin{pmatrix}\frac{\sqrt{3}}{2}&-\frac{1}{2}\end{pmatrix}$

13: else if $i<3\lfloor\frac{l}{2}\rfloor+3\lceil\frac{l}{2}\rceil$ then
$step\leftarrow\begin{pmatrix}\frac{\sqrt{3}}{2}&\frac{1}{2}\end{pmatrix}$

14: end if

15: $\mathcal{K}.append\Big{(}\mathcal{K}\big{[}-1\big{]}+step\Big{)}$

16:end for

##  5 Conclusion

As there are only 256 ETA rules, they can all be explored even with somewhat
limited computational resources. Their preliminary study aimed to show the
interest of these automata and to motivate a more in-depth analysis. With the
framework presented here, they can now be efficiently implemented.

## References

  * [1] C. Bays, “Cellular Automata in the Triangular Tessellation,” _Complex Systems_ , vol. 8, no. 2, p. 127, 1994.
  * [2] ——, “Cellular Automata in Triangular, Pentagonal and Hexagonal Tessellations,” in _Encyclopedia of Complexity and Systems Science_ , 2009, pp. 892–900.
  * [3] ——, “The game of life in non-square environments,” in _Game of Life Cellular Automata_. Springer, 2010, pp. 319–329.
  * [4] B. Breckling, G. Pe’er, and Y. G. Matsinos, “Cellular automata in ecological modelling,” in _Modelling Complex Ecological Dynamics: An Introduction into Ecological Modelling for Students, Teachers & Scientists_. Springer, 2011, pp. 105–117.
  * [5] Y. Lin, A. Mynett, and Q. Chen, _Application of Unstructured Cellular Automata on Ecological Modelling_. Berlin, Heidelberg: Springer Berlin Heidelberg, 2009, pp. 624–629.
  * [6] L. Naumov, “Generalized coordinates for cellular automata grids,” in _International Conference on Computational Science_. Springer, 2003, pp. 869–878.
  * [7] G. M. Ortigoza, A. Lorandi, and I. Neri, “ACFUEGOS: An Unstructured Triangular Cellular Automata for Modelling Forest Fire Propagation,” in _High Performance Computer Applications_ , I. Gitler and J. Klapp, Eds. Cham: Springer International Publishing, 2016, vol. 595, pp. 132–143.
  * [8] A. V. Pavlova, S. E. Rubtsov, and I. S. Telyatnikov, “Using cellular automata in modelling of the fire front propagation through rough terrain,” _IOP Conference Series: Earth and Environmental Science_ , vol. 579, no. 1, p. 012104, Oct. 2020.
  * [9] M. Saadat and B. Nagy, “Cellular Automata Approach to Mathematical Morphology in the Triangular Grid,” _Acta Polytechnica Hungarica_ , vol. 15, no. 6, pp. 45–62, 2018.
  * [10] M. Saadat, “Cellular Automata in the Triangular Grid,” Master’s thesis, Eastern Mediterranean University (EMU)-Doğu Akdeniz Üniversitesi (DAÜ), 2016.
  * [11] M. R. Saadat and N. Benedek, “Copy Machines - Self-reproduction with 2 States on Archimedean Tilings,” _Journal of Cellular Automata_ , vol. 17, pp. 221–249, 2023.
  * [12] M. R. Saadat and B. Nagy, “Generating Patterns on the Triangular Grid by Cellular Automata including Alternating Use of Two Rules,” in _2021 12th International Symposium on Image and Signal Processing and Analysis (ISPA)_. Zagreb, Croatia: IEEE, Sep. 2021, pp. 253–258.
  * [13] S. Uguz, S. Redjepov, E. Acar, and H. Akin, “Structure and reversibility of 2D von Neumann cellular automata over triangular lattice,” _International Journal of Bifurcation and Chaos_ , vol. 27, p. 1750083, 2017\.
  * [14] G. A. Wainer, “An introduction to cellular automata models with cell-DEVS,” in _2019 Winter Simulation Conference (WSC)_. IEEE, 2019, pp. 1534–1548.
  * [15] M. Zawidzki, “Application of Semitotalistic 2D Cellular Automata on a Triangulated 3D Surface,” _International Journal of Design & Nature and Ecodynamics_, vol. 6, no. 1, pp. 34–51, Jan. 2011.
  * [16] P. Cousin and A. Maignan, “Organic structures emerging from bio-inspired graph-rewriting automata,” in _2022 24th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC)_. IEEE, 2022, pp. 293–296.
  * [17] S. Wolfram _et al._ , _A new kind of science_. Wolfram media Champaign, 2002, vol. 5.
  * [18] E. W. Weisstein, “Elementary cellular automaton,” _mathworld.wolfram.com_ , 2002.

in 8, 16, 25, 32, 96, 128

$t=\n$

x0¡ 16 y0¡ 16

0