Hexagonal Interacting States

A new DLL which operates with MCell has been developed. This DLL implements a new family of rules called 'Hexagonal Interacting States'. Specific rules in the family are selected by setting parameters in an input dialog window shown below.

Each cell can be in one of 9 possible states. On each iteration, the states of a cell's 6 neighbors are counted and the cell changes state according to the resulting counts. If a cell is in state 0, it changes to a state in the range 1 thru 8 if one or more of the conditions specified in the 'Birth Control' is satisfied. Similarly, if a cell is not in state 0, it remains in its current state or returns to state 0 according to the conditions specified in the 'Survival Control'. In the example dialog shown above the settings in row 1 of the 'Birth Control' state:

And the settings in row 6 of the 'Survival Control' state: The 'Birth Control' grid has 8 rows. Each row contains settings which specify the conditions that must be satisfied in order for a cell to change from state 0 to state n where n is the row number. The conditions in the rows are tested in numerical order and the first condition that is satisfied determines the next state of the cell. If no condition is satisfied, the cell remains in state 0.

The 'Survival Control' grid also has 8 rows. Each row contains settings which specify the conditions that must be satisfied for a cell to remain in state n where n is the row number. Again, if no condition is satisfied, the cell returns to state 0.

Grid values are changed by simply left clicking them. Each click rotates the value thru the range 0..8, incrementing with normal clicks and decrementing if the shift key is held down.

Notice the two buttons labeled 'OR >=' and 'AND ='. These are toggle buttons which rotate thru the values 'OR =', 'OR >=', 'AND >=' and 'AND ='. To see the relevance of these buttons carefully study the example described above.

For convenience, buttons are provided to reset each grid and to randomly select candidate conditions. Each of the random select buttons has an associated control which limits the generated counts. When clicked, these random select buttons generate two random numbers in the range 0 thru 'limit' for each row and stores them in two random positions in that row. The limit values are changed in a manner similar to the grid values.

A process for finding interesting rules that works quite well is:

  1. Reset both rule grids.
  2. Set the random limit value in the birth control to 3.
  3. Click the random button in the birth control.
  4. Test the generated rule using random seeding.
  5. Reset the birth control grid and repeat steps 3 thru 4 until an interesting rule is found.
  6. Set the random limit value in the survival control to 1, 2 or 3.
  7. Reset the survival grid and click its random button.
  8. Test the rule variant.
  9. Repeat steps 6 and 8.
  10. Increment or decrement grid values one at a time and examine the effect.
  11. Repeat step 10.

To illustrate the potential of this new family of rules, a set of example patterns has been assembled. Several interesting rules have been selected and a few examples are given for each.

The convention used to name the example patterns is:

NamePattern
CxxxChos
DFxxxDiagonal Flotilla
DGxxxDiagonal Gun
DPxxxDiagonal Puffer
DSxxxDiagonal Ship
DSTxxxDiagonal Stretcher
EPxxxExpanding Pattern
FxxxFuse
GxxxGun
IxxxInteraction
IGxxxIrregular Gun
KGxxxKnight Gun
KPxxxKnight Puffer
KSxxxKnight Ship
MxxxMaximum Tiling
MGxxxMoving Gun
MRxxxMoving Replicator
OxxxOscillator
PxxxPuffer
RxxxReplicator
SxxxShip
SCxxxStretching Chaos
SDxxxSpeed Comparison
SDPxxxStretching Diagonal Puffer
SDSxxxStretching Diagonal Ship
SExxxSymmetrical Expansion
SLxxxStill Life
SPxxxStretching Puffer
SSxxxStretching Ship
STxxxStretcher
USxxxUnusual Ship

The following tables show the number of examples by type for each rule:

Rule 1
TypeNumber
DS2
O1
S2
Rule 2
TypeNumber
DS1
S2
Rule 3
TypeNumber
DP1
DS1
O1
P2
S1
Rule 4
TypeNumber
DST1
Rule 5
TypeNumber
DST2
Rule 6
TypeNumber
R1
Rule 7
TypeNumber
DP3
DS2
O2
R2
Rule 8
TypeNumber
DST1
Rule 9
TypeNumber
R1
Rule 10
TypeNumber
DS2
R1
Rule 11
TypeNumber
DS3
Rule 12
TypeNumber
DP1
Rule 13
TypeNumber
O1
Rule 14
TypeNumber
DS1
Rule 15
TypeNumber
DS1
MR3
Rule 16
TypeNumber
O1
Rule 17
TypeNumber
DS2
R3
Rule 18
TypeNumber
DG7
DP3
DS1
I1
O5
Rule 19
TypeNumber
DG6
Rule 20
TypeNumber
DG14
DP12
DS8
O8
Rule 21
TypeNumber
DP8
DS2
Rule 22
TypeNumber
DS1
S2
Rule 23
TypeNumber
DS5
S2
SD1

The following is a cross reference showing which rules support which types:

DG
[18, 19, 20]

DP
[3, 7, 12, 18, 20, 21]

DS
[1, 2, 3, 7, 10, 11, 14, 15, 17, 18, 20, 21, 22, 23]

DST
[4, 5, 8]

I
[18]

MR
[15]

O
[1, 3, 7, 13, 16, 18, 20]

P
[3]

R
[6, 7, 9, 10, 17]

S
[1, 2, 3, 22, 23]

SD
[23]

The formal definition of each rule follows:

Rule 001
HexagonalInteractingStates
,TB1,TS0,B1;00300002,B2;00000100,B3;01003000,B4;00100000,B5;00000030,B6;00000000,B7;30100000,B8;
00020010,S1;00100100,S2;00000000,S3;00001000,S4;00000001,S5;00000001,S6;00100000,S7;00000000,S8;10100000
Rule 002
HexagonalInteractingStates
,TB1,TS0,B1;00300002,B2;00000100,B3;01003000,B4;00100000,B5;00000030,B6;00000000,B7;30100000,B8;
00020010,S1;00000100,S2;10000000,S3;00000001,S4;10000100,S5;00100000,S6;00000000,S7;01000001,S8;00001000
Rule 003
HexagonalInteractingStates
,TB1,TS0,B1;00300002,B2;00000100,B3;01003000,B4;00100000,B5;00000030,B6;00000000,B7;30100000,B8;
00020010,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000001,S8;00000000
Rule 004
HexagonalInteractingStates
,TB1,TS0,B1;00010000,B2;03000300,B3;03000100,B4;00200000,B5;30000000,B6;00000120,B7;00020020,B8;
00200003,S1;00001010,S2;00001000,S3;00000000,S4;00001000,S5;10000000,S6;00000000,S7;00000010,S8;00010001
Rule 005
HexagonalInteractingStates
,TB1,TS0,B1;00010000,B2;03000300,B3;03000100,B4;00200000,B5;30000000,B6;00000120,B7;00020020,B8;
00200003,S1;00000000,S2;00001000,S3;00000000,S4;00001000,S5;10000000,S6;00000000,S7;00000010,S8;00010001
Rule 006
HexagonalInteractingStates
,TB1,TS0,B1;00302000,B2;00330000,B3;00000300,B4;00010000,B5;00000000,B6;00003000,B7;00200002,B8;
20000000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
Rule 007
HexagonalInteractingStates
,TB1,TS0,B1;00200000,B2;00100000,B3;10000000,B4;00000000,B5;00100300,B6;30001000,B7;00300000,B8;
00002000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
Rule 008
HexagonalInteractingStates
,TB1,TS0,B1;00200000,B2;00100000,B3;10000000,B4;00000000,B5;00100300,B6;30001000,B7;00300000,B8;
00002000,S1;00000010,S2;00000100,S3;01010000,S4;01000000,S5;10010000,S6;10000000,S7;00010010,S8;01000000
Rule 009
HexagonalInteractingStates
,TB1,TS1,B1;01010020,B2;00001002,B3;00020002,B4;00000030,B5;00003010,B6;03000000,B7;00200001,B8;
00010200,S1;01000000,S2;00000101,S3;00000001,S4;10000100,S5;10010000,S6;00000000,S7;01000000,S8;00000000
Rule 010
HexagonalInteractingStates
,TB1,TS1,B1;01010020,B2;00001002,B3;00020002,B4;00100030,B5;00003010,B6;03000000,B7;00200001,B8;
00010200,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
Rule 011
HexagonalInteractingStates
,TB1,TS1,B1;01010020,B2;00001002,B3;00020002,B4;00100030,B5;00003010,B6;03000000,B7;00200001,B8;
00010200,S1;00000010,S2;00000010,S3;00000000,S4;00000001,S5;00010010,S6;00010010,S7;00001000,S8;00001000
Rule 012
HexagonalInteractingStates
,TB1,TS1,B1;02000010,B2;00020100,B3;20000010,B4;00001300,B5;00003030,B6;00303000,B7;00010002,B8;
02000030,S1;10000000,S2;00000000,S3;01000001,S4;00001000,S5;00000000,S6;00000010,S7;00000010,S8;10000000
Rule 013
HexagonalInteractingStates
,TB1,TS1,B1;02000010,B2;00020100,B3;20000010,B4;00001300,B5;00003030,B6;00303000,B7;00010002,B8;
02000030,S1;00000000,S2;00000000,S3;00010000,S4;00000000,S5;00000011,S6;00000000,S7;01000000,S8;00100001
Rule 014
HexagonalInteractingStates
,TB1,TS1,B1;02000010,B2;00020100,B3;20000010,B4;00001300,B5;00003030,B6;00303000,B7;00010002,B8;
02000030,S1;00001010,S2;00000000,S3;00000000,S4;00000000,S5;00100000,S6;00000000,S7;00000000,S8;01000000
Rule 015
HexagonalInteractingStates
,TB1,TS1,B1;00030000,B2;00001000,B3;03010000,B4;00001300,B5;00300010,B6;00023000,B7;30000001,B8;
03200000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
Rule 016
HexagonalInteractingStates
,TB1,TS1,B1;00030000,B2;00001000,B3;03010000,B4;00001300,B5;00300010,B6;00023000,B7;30000001,B8;
03200000,S1;00110000,S2;01000100,S3;01100000,S4;00001000,S5;00000010,S6;00010001,S7;00100000,S8;10100000
Rule 017
HexagonalInteractingStates
,TB1,TS1,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
Rule 018
HexagonalInteractingStates
,TB1,TS2,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;00000000,S2;00000000,S3;00010000,S4;00010000,S5;00000100,S6;00000000,S7;00010000,S8;00000000
Rule 019
HexagonalInteractingStates
,TB1,TS2,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;00000000,S2;00000000,S3;00010000,S4;00300000,S5;00000100,S6;00000000,S7;00010000,S8;00000000
Rule 020
HexagonalInteractingStates
,TB1,TS2,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;20000000,S2;00000000,S3;00010000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
Rule 021
HexagonalInteractingStates
,TB1,TS3,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;20000000,S2;00000000,S3;00010000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
Rule 022
HexagonalInteractingStates
,TB1,TS0,B1;00000201,B2;02001000,B3;00000000,B4;10200000,B5;00001000,B6;00020000,B7;00002100,B8;
00000000,S1;00000000,S2;00001010,S3;01000100,S4;00000000,S5;00000000,S6;10000000,S7;00000001,S8;00000000
Rule 023
HexagonalInteractingStates
,TB1,TS0,B1;00100000,B2;00200000,B3;00020200,B4;00020010,B5;00300000,B6;01000010,B7;00000002,B8;
00000010,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000

The formal definitions of some potentially interesting rules which have not been fully explored follows:

T001.mcl
HexagonalInteractingStates
,TB1,TS1,B1;00102000,B2;00001000,B3;00010000,B4;00001300,B5;00300010,B6;00023000,B7;30000001,B8;
03200000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
T002.mcl
HexagonalInteractingStates
,TB1,TS1,B1;00101000,B2;00001000,B3;00010000,B4;00001300,B5;00300010,B6;00023000,B7;30000001,B8;
03200000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
T003.mcl
HexagonalInteractingStates
,TB1,TS1,B1;00102000,B2;00001000,B3;00010000,B4;00001300,B5;00300010,B6;00023000,B7;30000001,B8;
03200000,S1;00000000,S2;00000001,S3;00000000,S4;01000000,S5;00000000,S6;00100001,S7;00000000,S8;00011000
T004.mcl
HexagonalInteractingStates
,TB1,TS1,B1;00102000,B2;00001000,B3;00010000,B4;00001300,B5;00300010,B6;00023000,B7;00000001,B8;
03200000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
T005.mcl
HexagonalInteractingStates
,TB1,TS1,B1;20000000,B2;00301000,B3;00000020,B4;01000000,B5;00001000,B6;20000000,B7;00010300,B8;
02000000,S1;00000100,S2;00010000,S3;01000000,S4;10000000,S5;10001000,S6;00010000,S7;10000100,S8;00000001
T006.mcl
HexagonalInteractingStates
,TB1,TS1,B1;20000000,B2;00301000,B3;00000020,B4;01000000,B5;00001000,B6;20000000,B7;00010300,B8;
02000000,S1;02100000,S2;01000000,S3;00000000,S4;00010001,S5;00100000,S6;00000000,S7;00000000,S8;00002002
T007.mcl
HexagonalInteractingStates
,TB1,TS1,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;00000000,S2;00000100,S3;00000010,S4;10000000,S5;00000000,S6;00000000,S7;00000011,S8;00000000
T008.mcl
HexagonalInteractingStates
,TB1,TS1,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;10000010,S2;01000000,S3;00000000,S4;00001000,S5;00001000,S6;00000001,S7;00001000,S8;00000000
T009.mcl
HexagonalInteractingStates
,TB1,TS1,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;10000100,S2;00000000,S3;00000000,S4;00001001,S5;10010000,S6;01000001,S7;00001100,S8;00010000
T010.mcl
HexagonalInteractingStates
,TB1,TS2,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;00000000,S2;00000000,S3;00010000,S4;00030000,S5;00000100,S6;00000000,S7;00010000,S8;00000000
T011.mcl
HexagonalInteractingStates
,TB1,TS1,B1;02000000,B2;00200000,B3;00000001,B4;00001002,B5;02000000,B6;00000002,B7;00030000,B8;
00010003,S1;00000000,S2;00000000,S3;10010000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
T012.mcl
HexagonalInteractingStates
,TB1,TS3,B1;00033000,B2;00020000,B3;00000020,B4;00300003,B5;00000001,B6;02300000,B7;00030030,B8;
00001000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
T013.mcl
HexagonalInteractingStates
,TB1,TS3,B1;00010001,B2;00000000,B3;00002000,B4;00000000,B5;02000002,B6;00002000,B7;00000300,B8;
00001000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
T014.mcl
HexagonalInteractingStates
,TB1,TS0,B1;00000201,B2;02001000,B3;00000000,B4;10200000,B5;00001000,B6;00020000,B7;00002100,B8;
00000000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000
T015.mcl
HexagonalInteractingStates
,TB1,TS0,B1;00100000,B2;20000000,B3;03300000,B4;00000102,B5;00310000,B6;30010000,B7;00000000,B8;
00000000,S1;00000000,S2;00000000,S3;00000000,S4;00000000,S5;00000000,S6;00000000,S7;00000000,S8;00000000