Discrete Dynamics Lab

Update January 2018

ddlabz06 is documented in an updated hyperref PDF ExploringDiscreteDynamics-updateJan2018.pdf which can be downloaded HERE. This is an updated version of Exploring Discrete Dynamics, Second Edition (EDD2) (2016) published by Luniver Press, a 8x10 inch 577 page paperback with color figures, which can be purchased at Amazon-UK, Amazon-USA, and other online book sellers.

January 2018 updates (on the March 2017 release) include the following new features, as well as improvements and bug fixes.

  • New options for setting isotropic rules and transforming an existing rule to isotropic, for 1d, 2d and 3d, and multi-value (EDD #16.10.2). Isotropic dynamics is arguably closer to natural physics.

  • An isotropic 2d binary rule with a Moore neighborhood can now be saved/loaded in Golly's ``Hensel notation'' (EDD #16.10.3). A previous update allowed a 2d binary seed to be saved/loaded in Golly's “run-length” encoding (EDD #21.11). These updates make DDLab more compatible with Golly, software used in the game-of-Life community.

  • The DDlab code was tested and amended to sucessfully compile and run on the Raspberry Pi 3 computer, thanks to Michael Moeller (mmoel AT t-online DOT de). Micheal also sucessfully compiled and run DDlab on Solaris 2.6, and has provided Makefiles for both, available HERE.

An isotropic rule for a v5k6 hexagonal neighborhood --a snapshot of the
space-time pattern from a singleton seed, on a hexagonal lattice 100x100.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DDLab has been updated at regular intervals since its release in 1995. Its precursor was the Atlas software included on diskette inside the back cover of "The Global Dynamics of Cellular Automata" 1992.
For a list and download of this and older versions click here.

(EDD2ndEd-update) is the latest documentation
Below are links to previous updates,

March 2017
xMay 2016 (EDD2ndEd)
xxSept 2015
xxxMay 2013
xxxxJan 2013
xxxxxJune 2012 (EDD)
xxxxxxNov 2005
xxxxxxxDec 2003
xxxxxxxxJuly 2001 (Manual2001)
xxxxxxxxxxFeb 1999
xxxxxxxxxxxSept 1997

Download compiled versions of ddlabz06 for Linux, Mac, Cygwin and DOS. The ddlabz06 source code is available, including Makefiles, readme, GNU license, and notes.
Some of the March 2017 updates are summarised below. Click figures to enlarge. EDD#x.x.x refers to the relevant section in the Jan 2018 pdf update of the 2nd edition of Exploring Discrete Dynamics.

v5k5 1d space-time-pattern

v5k4 2d triangular neighborhood

v5k5 2d orthogonal n-hood

v5k6 2d hexagonal neighborhood

v5k6 3d neighborhood

v5k7 3d neighborhood
EDD#16.10.2 Setting Isotropic rules (for rcode only, 1d, 2d: k=2 to 10, 3d: k=6 or 7)
Rcode can be transformed for isotropic dynamics, which is arguably closer to natural physics. For isotropic rules, rotated and reflected neighborhoods (in 1d, 2d or 3d) have the same output, so a symmetric seed, for example a singleton, will maintain symmetry, as the figures above for 5-value 1d, 2d and 3d automata illustrated.
Kcode (sections EDD#13.4, 13.6.1) is by necessity isotropic, but isotropic rcode is more general, and includes the game-of-Life and other Life-like automata.
For 1d, 2d (k=2 to 10), and 3d (k=6 or 7), a random isometric rcode can be set (iso-i in section EDD#16.1.1), or an existing rcode can be transformed to isotropic from the bits/values reminder window (>iso-I/H/* in section EDD#16.4.1). H only applies for 2d binary v2k9 3×3 rcode, and allows saving or loading in the “Hensel notation” for compatibility with “Golly” software used in the game-of-Life community (see below). I transforms the current rule to isotropic, assigning the same output to each member of the isotropic ”group”, with the start of each group based on neighborhood decimal values, from low to high. The star symbol * also gives details of each group in the terminal (as in EDD#table 16.3). If the current rule is already isotropic there will be no change.

DDLab’s implementation of Hensel’s matrix


DDLab's native rcode lookup-table as a bitstring in 8 rows (for the Sayab rule). The diagonal symmetry in each 8x8 block is a necessary (but insufficient) indication of isotropy.

EDD#16.10.3 Hensel notation for Golly (for 2d binary v2k9 (3×3) CA only)
Binary 2d isotropic rules with a Moore neighborhood (v2k9 3×3 rcode), also refered to as “non- totalistic”, can be saved/loaded using the Hensel notation, which is compatible with “Golly”, software used in the game-of-Life community. The Hensel notation is an ascii string (based on an extention of the Birth/Survival notation) derived from a matix of the number of live cells in the outer neighborhood (columns) and a classification of the appearance of pattern types (rows) denoted by the characters “c,e,k,a,i,n,q,j,r,t,w,z”.

The figure on the left shows DDLab’s implementation of Hensel’s matrix, from which the ascii notation is derived. Each neighborhood pattern is the prototype of an isotropic group, where columns show the number of live cells (excluding the center), and lower case letters mark rows according to an appearance classification. These prototypes are equivalent to Hensel’s, but sometimes differ because in DDLab the lowest decimal equivalent is taken as the prototype. These decimal equivalents result from the sum of live values in the neighborhood calculated thus:
256 128 64
32 16 8
4 2 1

DDLab translates its own (isotropic) rcode encoding (EDD#16.16) into two such matrices, one for birth and one for survival. With some further refinements, an ascii string is constructed from these matrices defining the rule, which may form part of Golly’s *.rle file. For example, the Golly *.rle script,

x = 92, y = 47, rule = B2cei3eq4qt5cy6n/S12an3acejy4ijn5jy6-ek8
2o$2o2$90b2o$90b2o40$46b2o2$46bobo!

includes the rule’s Hensel string (top) and the initial state (below). The rule can be saved/loaded in DDlab as a *.hen file (enter H at >iso-I/H/* in EDD#16.4.1). The initial state “run-length” encoding can be saved/loaded in DDLab as a *.gly file (enter G at Golly-G in the seed prompt in EDD# 21.1, 21.11).

The example is for the Sayab rule and its glider-gun.

Return to the Discrete Dynamics Lab home page.
Last modified: Jan 2018