👾 !
Let’s continue to get acquainted with the variations of cellular automata. Earlier, we looked at the basic “lifelike” configuration and extended it over generations. Today we will take another step – we will expand the rules for counting neighbors so that not only the number of living neighbors will affect the birth and survival of cells, but also their location.
Introductory
A configuration of a spacecraft that takes into account the location of neighbors is called nontotalistic. It is a purely internal term, practically unknown outside of automata theory. There are two types of nontopical configurations: isotropic, i.e., directionindependent, and anisotropic/nonisotropic, respectively, dependent. We’ll come back to that later. For now, let’s just note that today we will consider isotropic nonnotalist spacecraft, often abbreviated to an abbreviation INT.
Don’t be alarmed, it’s actually very simple.
INT configuration is the most popular category among enthusiasts for finding new rules. In the largest online catalogue of spacecraft 2/3 of all known rules relate to the configuration discussed today.
It’s easy to calculate that we can have a total of 256 different combinations of neighbors. But since we’re looking at isotropic spacecraft, locations likeandin our case, equivalent. In the end, 256 specific locations boil down to specific patterns. Alan Hensel, an enthusiast and collector of spacecraft since 1986, proposed a notation that later received his name for a particular pattern.
To my great surprise, Hensel’s notation, as well as the INT configuration, is not described anywhere on the Russian Internet, so there is not even a wellestablished Cyrillic version of the author’s surname.
Hensel’s notation has become the de facto standard for the INT notation of cellular automata, and includes the following notations for the patterns of living neighbors:

0 
1 
2 
3 
4 
5 
6 
7 
8 
— (no letter) 








c (corner) 



e (edge) 



k (knight) 





a (adjacent) 





i 





n 





y 







q 







j 







r 







t 









w 









z 








Note that Hensel’s notation, built on the vicinity of Moore (), generalizes the von Neumann neighborhood () via edge Patterns 14.
Hensel’s notation does not replace, but extends the standard B…/S… Notation.
Simple digits, as in basic notation, correspond to all possible locations.
To take into account only certain patterns, a set of corresponding letters is written after the number.
To take into account all locations except for certain patterns, the set of letters is preceded by a minus.
Implementation Details
The most convenient way to compare a specific location with patterns is to use hash tables of integers compiled from a binary representation of the location of cells.
# 0 1 2
# 3 • 4
# 5 6 7
hensel_str = { # живые клетки в исходных паттернах
'': {'0': '', '8': '01234567'},
'c': {'1': '0', '2': '02', '3': '025', '4': '0257', '5': '13467', '6': '134567', '7': '1234567'},
'e': {'1': '1', '2': '13', '3': '134', '4': '1346', '5': '02567', '6': '024567', '7': '0234567'},
'k': {'2': '04', '3': '046', '4': '0236', '5': '12357', '6': '123567'},
'a': {'2': '01', '3': '013', '4': '0124', '5': '24567', '6': '234567'},
'i': {'2': '16', '3': '012', '4': '0234', '5': '34567', '6': '023457'},
'n': {'2': '07', '3': '024', '4': '0125', '5': '13567', '6': '123456'},
'y': {'3': '026', '4': '0245', '5': '13457'},
'q': {'3': '017', '4': '0137', '5': '23456'},
'j': {'3': '014', '4': '0146', '5': '23567'},
'r': {'3': '016', '4': '0134', '5': '23457'},
't': {'4': '0126'},
'w': {'4': '0147'},
'z': {'4': '0167'},
}
hensel_int = { # результирующие int'ы с поворотами и отражениями паттернов
'': {'0': {0}, '8': {255}},
'c': {
'1': {1, 4, 32, 128},
'2': {5, 33, 132, 160},
'3': {37, 133, 161, 164},
'4': {165},
'5': {91, 94, 122, 218},
'6': {95, 123, 222, 250},
'7': {127, 223, 251, 254},
},
'e': {
'1': {2, 8, 16, 64},
'2': {10, 18, 72, 80},
'3': {26, 74, 82, 88},
'4': {90},
'5': {167, 173, 181, 229},
'6': {175, 183, 237, 245},
'7': {191, 239, 247, 253},
},
'k': {
'2': {12, 17, 34, 48, 65, 68, 130, 136},
'3': {50, 76, 81, 138},
'4': {51, 77, 85, 113, 142, 170, 178, 204},
'5': {117, 174, 179, 205},
'6': {119, 125, 187, 190, 207, 221, 238, 243},
},
'a': {
'2': {3, 6, 9, 20, 40, 96, 144, 192},
'3': {11, 22, 104, 208},
'4': {15, 23, 43, 105, 150, 212, 232, 240},
'5': {47, 151, 233, 244},
'6': {63, 111, 159, 215, 235, 246, 249, 252},
},
'i': {
'2': {24, 66},
'3': {7, 41, 148, 224},
'4': {29, 99, 184, 198},
'5': {31, 107, 214, 248},
'6': {189, 231},
},
'n': {
'2': {36, 129},
'3': {13, 21, 35, 97, 134, 168, 176, 196},
'4': {39, 45, 135, 149, 169, 180, 225, 228},
'5': {59, 79, 87, 121, 158, 220, 234, 242},
'6': {126, 219},
},
'y': {
'3': {49, 69, 140, 162},
'4': {53, 101, 141, 163, 166, 172, 177, 197},
'5': {93, 115, 186, 206},
},
'q': {
'3': {38, 44, 52, 100, 131, 137, 145, 193},
'4': {54, 108, 139, 209},
'5': {62, 110, 118, 124, 155, 203, 211, 217},
},
'j': {
'3': {14, 19, 42, 73, 84, 112, 146, 200},
'4': {58, 78, 83, 89, 92, 114, 154, 202},
'5': {55, 109, 143, 171, 182, 213, 236, 241},
},
'r': {
'3': {25, 28, 56, 67, 70, 98, 152, 194},
'4': {27, 30, 75, 86, 106, 120, 210, 216},
'5': {61, 103, 157, 185, 188, 199, 227, 230},
},
't': {'4': {57, 71, 156, 226}},
'w': {'4': {46, 116, 147, 201}},
'z': {'4': {60, 102, 153, 195}},
}
When processing a specific rule, we populate the hash tables birth
and survival
corresponding values from hensel_int
, in which we just look at the occurrences.
0. Just Friends
Let’s start, as usual, out of count and with an example. B2a/S12
Hensel’s notation, in this case, merely removes the possibility of the birth of cells from two adjacent ones “Parents”Kind of , leaving all other locations.
If you look at the option without neighborhood patterns, B2/S12, we’ll see something like this:
Subtle flicker
However, in the original version, the rule looks much different:
One small change, and such a different result.
This rule is one of the classic rules for representing INT configurations, and there are a lot of different shapes and preset starts in it:
And many others. On almost any rule, you can find a huge number of interesting figures and starting states. It’s kind of collecting. Alan Hensel is one such collector.
1. Logic Rule
In this rule, a cell is alive in the next generation if it is dead at the moment and exactly two adjacent cells are alive, with these two cells connected to each other either orthogonally or diagonally. In Hensel’s notation, this is expressed as B2ae/S
Signaling schemes can be implemented on this rule, thanks to two photons (light gliders = gliders that move at the highest possible speed of 1 cell per iteration), each of which can be encoded 0/1.
The interaction of photons from bitstream generators (photongenerating guns) creates demonstrations of logical operations on a cellular automaton.
For example, this is what XOR looks like on 8 generators:
N. Turing Machine
Without stray from the topic, on the rule B3cjkq4ceit5i6c/S012c3j4a5eiy6ci you can build a onedimensional Turing machine with just three cells:
2. Diamonds
Let’s move on to the longer rules. B2en3ij4a5e7e8/S1c2cek3a4aiqw5aky
This rule, in addition to still lifesrhombuses, generates very unusual vortexlike locomotives that can “chaotically” change direction.
Explosive replicators are also often found on this rule:
3. Wickstretcher
B2n3aikq/S2i3a4i
The rule generates “wick coils” that unwind until they are damaged by another object. If the wick is damaged, it “ignites” and, catching up with the coil, detonates the latter, generating 4 more coils.
N. Sanctuary
Another crenellated fence generator. More linear. B2ei3ci/S1c23
4. Flutter
B2a3j4acekn56/S15y
One of the rules with the most bizarre simplest spaceships:
5. Emitters
B2i3ai4cei5c6c7/S2ae3acein4t5aq6cei7c8
A rule that generates diamondshaped explosions that expand until they are damaged by collisions with other objects. When damaged on two adjacent sides, the remaining part after the destruction is transferred to one of the many configurations of the spacecraft. In case of unilateral destruction, it can leave a diagonal spacecraft.
6. Hundredmirrorlife
B2i3kq4j5y7/S2i34centw5e
Another explosive rule. In spite of the complex ornament of the explosion, which on other rules could be close only to a certain initial state, here it regularly arises by itself from any accidental beginning.
N. Suns
An ideologically similar rule is B2ei3aeij4cjt5ky6ei/S1c2ace3jkn4aeijktw5ekry6in7e
N. wlife
And one more thing in common is an explosives. B34w/S23
7. SimpleInverseFire
A separate group of rules is the inverted view, when visible figures are created not by living cells, but by dead cells. B2ak4568/S156ak78
8. SlugWorld
B2e3ai4arw5678/S3an4ar5i678
The rule is with “flowing” islands that tend to stepped edges. In the example below, we managed to catch a rather rare behavior — a process looking for an object to merge. Depending on the arrangement of the joint, it can merge with it, or it can collapse, returning to its island in a small avalanche.
9. Crosspuffer
The first and only rule for today is to start from a predetermined position.
B2ci3ae4e/S1c2i3y4et5e
The mechanics are very similar to the Wickstretcher – if the tail is damaged, it will overtake the head of the figure at double speed, and when combined, it will blow up the latter by 4 similar ones.
10. Tank Field
The rule spawns armadas of tanktype spaceships. There are three variations that are not too different from each other. The animation shows the second rule.
B1e2an3ejkry4cjkrw5ceny6c7c/S2i3cknqy4cknqty5ej6ce
B1e2an3ejkry4cjrw5ceny6c7c/S2ik3aejr4eknqy5ej6e
B1e2an3ejkry4cjrw5ceny6c7c/S2ik3aejr4knqy5ej6e
Bonus
B2ae4i/S1e2in 🙂
B1e/S12 lines
B2cei3i4z5a6a78/S1c2ik3y4q5a678 – Offer your options.
Read also
About cellular automata:

Basic lifelike configuration

Cell Aging: A Parameter of Generations

Hensel’s Notation: Taking into account the location of neighbors (you are here)

LtL: Extended Neighbor Search Radius

Cyclic spacecraft

Alternate Neighborhoods & HROT

Blocky spacecraft, Margolus neighborhood

Weighted Neighborhood, Gaussian Neighborhood, Far Corners/Edges

Directional and Custom Neighborhoods

Killer Cells, BSFK[L]

Scarcity Rules

Reverse and extended generations

Forest Fire Modeling: Theory, Cellular Automaton in Python

Social Segregation: Schelling’s Model and the Distribution of Ethnic Groups in Israeli Cities
Other:

🟢 History of Wildfire Modeling

🟠 REcollapse: Fuzzing Using Unicode Normalization

🔵 Stop Using [azаяё]: Proper handling of Unicode characters and categories in regular expressions

🟢 A Brief History of the Calendar and the Fantasy of a SixDay Week

🟢 Complete LeetCode for a year: site tour and roadmap
← Previous Part  Next part →
———
Acknowledgment and Usage Notice
The editorial team at TechBurst Magazine acknowledges the invaluable contribution of the author of the original article that forms the foundation of our publication. We sincerely appreciate the author’s work. All images in this publication are sourced directly from the original article, where a reference to the author’s profile is provided as well. This publication respects the author’s rights and enhances the visibility of their original work. If there are any concerns or the author wishes to discuss this matter further, we welcome an open dialogue to address potential issues and find an amicable resolution. Feel free to contact us through the ‘Contact Us’ section; the link is available in the website footer.