Multiple Neighborhoods Cellular Automata

This one comes from the code here from Slackermanz.

For this CA there are 4 different large size neighborhoods used each step.

Each cell uses the above neighborhood patterns to tally the live cells into 4 sum values. sum_0 is the live cell count in neighborhood 1, sum_1 is the live cell count in neighborhood 2, sum_2 is the live cell count in neighborhood 3, and sum_3 is the live cell count in neighborhood 4.

The sums are used to determine life or death for the cells by using the following formulas.

If sum_0 is between 0 and 17 then the cell dies.
If sum_0 is between 40 and 42 then the cell lives.
If sum_1 is between 10 and 13 then the cell lives.
If sum_2 is between 9 and 21 then the cell dies.
If sum_3 is between 78 and 89 then the cell dies.
If sum_3 is greater than 108 then the cell dies.

Put all that into an options form to allow easy config changes.

Multiple Neighborhoods Cellular Automaton

Here is a quick sample movie with a few of the interesting rules I found so far.

Multiple Neighborhoods Cellular Automata are now included in the latest version of Visions of Chaos.

See here for more explorations into the world of Multiple Neighborhood Cellular Automata.

Jason.

Stacked Generations Display For 2D Cellular Automata

History Dependent Cellular Automaton

This isn’t something new, but a feature that was on my to do list for years after seeing it implemented elsewhere.

History Dependent Cellular Automaton

The idea is simple. You take a 2D CA and rather than render each step/cycle/update as a 2D image, you add the current 2D cell states as a layer of a 3D stack of cubes. Each slice of the cube is another step in the CA generation.

History Dependent Cellular Automaton

These examples are of History Dependent Cellular Automata.

History Dependent Cellular Automaton

Once again I must give a shout out to the most excellent Mitsuba Renderer. I would not be able to render these examples with such nicely shaded cubes without it.

Visions of Chaos now supports generating 2D Cellular Automata, History Dependent Cellular Automata and Indexed Totalistic Cellular Automata as stacked generations.

Jason.

History Dependent Cellular Automata

I have been exploring a variety of cellular automata lately and here is another one.

This is from another idea I had. Andrew Adamatzky let me know there has been work done using previous states before referred to as “Cellular Automata with Memory”. See these papers by Ramon Alonso-Sanz for other examples of 1D and 2D CAs using memory from previous generations.

This is a totalistic CA that uses the usual 8 immediate neighbor cells as well as the last step’s current cell and 8 neighbors. This gives a total of 17 neighbor cells that can influence the birth and survival of the cells.

I call them “History Dependent Cellular Automata” because they depend on the previous cycles’ neighbor cells as well as the usual 8 immediate neighbor cells.

History Dependent Cellular Automaton

Here are a few animated GIFS showing some early results. The GIF thumbnails are messy, so click them to see the clear GIFs.

Amoebas 01

History Dependent Cellular Automaton

Amoebas 03

History Dependent Cellular Automaton

Sample 01

History Dependent Cellular Automaton

Space Ships

History Dependent Cellular Automaton

I also experimented with extending the history back another step.

History Dependent Cellular Automaton

This gives a much larger search space to find interesting rules within and the majority of rules are random chaos, but here are a few interesting results I stumbled on through random searches. Again, the GIF thumbnails are a mess, so click them to see the clear definition GIF animations.

Feeding Walkers

History Dependent Cellular Automaton

Space Ships

History Dependent Cellular Automaton

Surviving Clumps

History Dependent Cellular Automaton

I also experimented with extending these CA into 3D space. Same principal as 2D but with more neighbors in 3D. Here is an example movie.

These CAs are now included with Visions of Chaos if you want to have a play with them.

Jason.

Alternating Neighborhoods Cellular Automata

This was a quick experiment with an idea I had.

Alternating Neighborhoods Cellular Automaton

Update a cellular automata using different neighborhoods and rules every second step. The first step uses the 4 neighbor cells north, south, east and west. The second step uses the 4 diagonal neighbors. Then they alternate each step of the CA. Each neighborhood has its own set of rules for birth and survival.

Alternating Neighborhoods Cellular Automaton

There are a total of 2^20 or 1,048,576 possible rules using this method. 9*2^20 (9,437,184) if you take into account a maximum state value of between 2 and 10 for each cell.

Click the following to open a short GIF animation of each of the rules. The thumbnails are a mess.

Amoebas

Alternating Neighborhoods Cellular Automaton

Fireworks

Alternating Neighborhoods Cellular Automaton

Gliders

Alternating Neighborhoods Cellular Automaton

Life-ish

Alternating Neighborhoods Cellular Automaton

Traffic

Alternating Neighborhoods Cellular Automaton

Walkers and Spinners

Alternating Neighborhoods Cellular Automaton

Extending the possible maximum states of each cell up to 10 shows potential with some more interesting structures.

Expanding Ships

Alternating Neighborhoods Cellular Automaton

Fireballs

Alternating Neighborhoods Cellular Automaton

Spirals

Alternating Neighborhoods Cellular Automaton

Stick Growth

Alternating Neighborhoods Cellular Automaton

My next idea was to extend the neighborhoods as follows

Alternating Neighborhoods Cellular Automaton

The settings are extended to handle the larger neighborhood.

Alternating Neighborhoods Cellular Automaton

This gives 2^52 or 4 quadrillion (4,503,599,627,370,496 to be exact) possible rules (and that is only for 2 state rules). A maximum cell state of 10 gives 9*2^52 or 40 quadrillion (40,532,396,646,334,464) possible rules. Finding those sweet spots of interest between dying out and total chaos becomes even more daunting.

I wasn’t confident that those neighborhoods would give any interesting results beyond chaotic noise, but they are showing potential so far from random searches and mutations of rules.

Amoeba

Alternating Neighborhoods Cellular Automaton

BZ-ish

Alternating Neighborhoods Cellular Automaton

Fire Ships

Alternating Neighborhoods Cellular Automaton

Pulsating

Alternating Neighborhoods Cellular Automaton

Thick Ripples

Alternating Neighborhoods Cellular Automaton

The Alternating Neighborhood Cellular Automata are now available as part of the latest version of Visions of Chaos.

Jason.

Zhang Cellular Automata

Inspiration

Another new cellular automaton. This time inspired by this post by Xiaohan Zhang (@hellocharlien on Twitter). I messaged Xiaohan about his algorithm and he generously provided the source code to his CA processing sketch here.

I called them the “Zhang Cellular Automata” as there was no official name given to these.

How they work

Setup a 2D array of integers for the CA cells. Fill with random values between 0 and numstates-1. I allow up to 9 for the numstates which means a 0 dead state and 1-8 alive states for cells.

Create a rule table which is an array 9×9 integers in size. Fill with random values between 0 and numstates-1.

Now the steps when processing each cell.
1. Count how many of the 8 Moore Neighborhood neighbors there are in each state (between 0 and numstates-1). This gives you an array countStatesOfNeighbors[0..numstates-1].
2. Remember the current cell state value.
3. Loop through the possible state ranges from 0 to numstates-1.
4. If the rule entry matches the loop then assign the loop value to the cell, otherwise the cell remains as is.

Here is my code for updating each cell


mystate:=c[x,y];
for s:=0 to numstates-1 do
begin
     if (countStatesOfNeighbors[s]=rule[myState,s]) then
     begin
          mystate:=s;
          break;
     end;
end;
t[x,y]:=mystate;

Results

There are interesting cyclic results that tend to go through cycles of life and death. One state will fill out an area of random noise with a new pattern and that pattern allows a new pattern to fill it, before the original random state refills the area.

Zhang Cellular Automaton

Zhang Cellular Automaton

Zhang Cellular Automaton

Zhang Cellular Automaton

Zhang Cellular Automaton

If you download Visions of Chaos you can see these running.

Jason.

Two Steps Back Cellular Automata

Inspiration

This CA was inspired by this Tumblr post by Charlie Deck (@bigblueboo on Twitter).

Since there is no name given for this CA, I called it the “Two Steps Back Cellular Automata”.

How it works

This time it is a more simple 1D CA.

Each cell is updated by counting the neighbors 2 cells either side of it and itself (5 cells) and the same 5 cells in the previous generation. This gives you a possible count of active cells between 0 and 10. The count is used into a rule array for the new cell state.

For example, if your rule array is rule[1,0,0,0,0,1,0,1,1,0,1] and the cell has 5 neighbor cells that are alive, then the new cell would be alive too (the rule counts start at 0, so the 6th entry in the rule array is for 5 active neighbors and that entry is 1).

You can convert the 11 digit rule into a binary string. The above is 10000101101 which converts into the decimal number 1069 (not 1441 as in Charlie’s post – looks like he reversed the binary digits before conversion).

Results

There are 2048 possible rules. Not a big amount compared to some CAs, so it was easy to setup a loop and generate all 2048 rules. These are a few of the interesting results starting from a single centered alive cell. I have included a low res and high detail version of each rule.

Rule 313

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 366

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 384

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 494

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 798

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 995

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 1069

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 1072

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 1437

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 1438

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 1623

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 1822

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Rule 2019

Two Steps Back Cellular Automaton

Two Steps Back Cellular Automaton

Extending the neighborhood

Once I went through those 2048 possibilities I extended the neighborhood 1 cell either side. So a total of 14 neighbor cells to check. This bumps the total possible rules up to 32768. I called these ones the “Two Steps Back Extended Cellular Automata”.

Extended Results

Again I kicked off a batch run and waited for the 32,768 results to render. Here are some of the more interesting results.

Rule 6270

Two Steps Back Extended Cellular Automaton

Two Steps Back Extended Cellular Automaton

Rule 10159

Two Steps Back Extended Cellular Automaton

Two Steps Back Extended Cellular Automaton

Rule 21627

Two Steps Back Extended Cellular Automaton

Two Steps Back Extended Cellular Automaton

Rule 28798

Two Steps Back Extended Cellular Automaton

Two Steps Back Extended Cellular Automaton

Rule 30278

Two Steps Back Extended Cellular Automaton

Two Steps Back Extended Cellular Automaton

See this flickr gallery for more samples.

Availability

Two Step Back Cellular Automata and Two Step Back Extended Cellular Automata are now new modes in Visions of Chaos.

Jason.

Indexed Totalistic Cellular Automata

Inspiration

This new form of Cellular Automata (at least they are new to me) came from a Tumblr post from Neil Makes Games (@NKnauth on Twitter). His post refers to @LorenSchmidt on Twitter, but I could not find the original post. There is enough info in Neil’s post to let me implement and experiment with these CAs.

Due to lack of a name and because I made some changes to the implementation I called them “Indexed Totalistic Cellular Automata”. The rule is totalistic in that it uses the total counts of neighbor cells to determine the new cell state, and the state counts act as an index into the rule array.

Define the rule

The rule for these CAs are based on a 2D rule table like the following.

Indexed Totalistic Cellular Automaton

The table is mapped to a 9×9 2D rule array of integers. That covers all possible state 1 and state 2 cell counts. There is no “fade out” or “die off” period where cells that “die” go into a semi-dead state before fully dying. All cell updates are based solely on the rule table.

Filling the grid array

The original used values between 1 and 3 to fill the grid. I use between 0 and 3. The different results of including and excluding the 0 are outlined below.

Processing the grid each step

Count the state 1 and state 2 cells in the immediate 8 cell Moore Neighborhood.

Use the state 1 and state 2 counts as an index into the rule array, ie result=rule[state1count,state2count]

If the result is 3 then the cell remains the same. If the result is 1 or 2 then the cell becomes 1 or 2. In the original CA there is no state 0 in the rule array, but I added it in so that if the result is 0 the cell becomes empty.

Results

From an initial experiment with these I have seen some interesting results. Click the following images to see an animated gif of the CAs.

There are many unique gliders.

Indexed Totalistic Cellular Automaton

And this fireworks doily like display

Indexed Totalistic Cellular Automaton

Extending the neighborhood size

I also played with extending the Moore Neighborhood to all cells within 2 grid distances (total of 24 possible neighbors).

Indexed Totalistic Cellular Automaton

The extended neighborhood tends to give more blobbly amoeba results. Although I have only started to experiment with these CAs so more unique outcomes should hopefully pop up in the future.

Indexed Totalistic Cellular Automaton

Indexed Totalistic Cellular Automaton

Extending to three dimensions

I did some tests with extending into 3D. 26 neighbors per cell. No results worth posting yet. I will update if I find any interesting results in 3D.

Availability

These new CAs are now included with Visions of Chaos. If you do find any new interesting rules, let me know.

Jason.