Project Life Notes
David A. Bagley, bagleyd AT verizon.net
Simple Life Viewers
Things To Do...
- All Automata projects (Life2D, Life3D, Life4D, Ant2D, Ant3D, and Loop)
- Scroll bars, also a way of automatically expanding would be nice.
- Life (Life2D, Life3D, Life4D)
- Maybe a good idea to have a better notation, if two different ways to
get to same neighborhood, I have a negative sign to differentiate, like for
life3d with 18 neighbors and rhombic doecahedron -18B4S45->12N18B4S45 and
18 neighbors and cube (faces and edges) 18B4S45->6N18B4S45.
(Negative was added later if previous already existed).
- For 12B3S278, manipulate clocks to search for a gun (near gun example).
Should be able to make p80 glider p186 gun, but I had no luck.
- While searching: figure out where one lifeform begins and another ends.
DB of lifeforms not helpful yet for multiple objects. To compensate there
is a junk list to ignore when run as application. (It will already ignore
for identical multiple objects (not touching each other) in menu by matching
them to their signature).
(This turns out not to be too useful in life2d for Conway and HighLife, as
good rules have plethora of small ships and oscillators.)
- Cell count not always accurate, also sometimes step causes it to run.
- With each different screen of life give a configuration screen:
"Pentagonal (Cairo Tiling)"
"Truncated Octahedral (Cubic Close Packing)".
Unfortunately this takes up too much space on screen.
Instead of this, a negative maybe used for neighbors if its not distinct...
i.e. this for an alternate way of having the same number of neighbors, if
- Ideas from Lee Meeker's xl4d, like 2d views?
- Life3D (and Life4D)
- For neighbors=22, converter "life3d2code.pl ac " does not
take into account the 2 different tetrahedron orientations, so half the
time its off by 2 in generating data for input into life3d.xml.
Typically, as a work around, I just subtract 2 from all z
coordinates if it does not work first time. Also grid needs to be a
size with a factor of several powers of 2 ... like 48 or 96.
- Add new symmetries, not convinced I have them all, especially for
- Resizing while running can corrupt an oscillator causing it to die,
but only noticed this in Life3D, (have not noticed lately).
- There should be a way of flipping and rotating 3D lifeform. (View
will change randomly if screen is resized.)
- Optimize wrapping on 3D, gliders goes off screen for a while...
adjust the cell size along with the field size so that forms
remain visible. (Resizing the screen may help find glider.)
- Add a 2D mode for ease of entry of data points.
- Draw a grid for which level the scroll mouse is on.
- Mouse fixes for erase cells and map 3D coord to 2D.
- As outlined in Meeker's paper there are 4D analogs of 3D:
todo, check other 3D rules for 4D analogs.
- Add other regular tessellation besides Tesseractic and Icositetrachoric
honeycomb (i.e. the Demitesseractic (Hexadecachoric) honeycomb 16 neighbor
where centers of cells would be on: (i+1/2,j+1/2,k,l), (i+1/2,j,k+1/2,l),
(i+1/2,j,k,l+1/2), (i,j+1/2,k+1/2,l), (i,j+1/2,k,l+1/2), (i,j,k+1/2,l+1/2).
Java - Latest Tweaks...
Changed slider to spinner as it takes up less room.
Ant3D added 8 neighbor and 14 neighbor version. The 14 cell would
be nice but it does nothing but corkscrew which seems like its
intrinsic to the shape. For ant to work it has to revisit its
starting point by default. Also want it to do something
different to the 6 neighbor version.
Life2D, Life3D, and Life4D added a way to search for gun given 2
parts in separate files.
Life2D, Life3D, and Life4D added toggle and triple detection so
can weed them out quickly if we want to.
Life3d and Life4d fixed random soup so it shows cells right away.
Life2D, Life3D, and Life4D added headless option for searching.
Ant2d added neighborhood 5 eyes and truchet.
Old website http://www.tux.org/~bagleyd died, shifted code base to
new website http://www.sillycycle.com
Separate util directory.
Found 2 22B4/S3 gliders, one orthogonal and one diagonal (2014
Fixed signature for tetrahedral-octahedral stuff around edge of
New 22 neighborhood added, new tetrahedral life based on just
tetrahedrons from tetrahedral-octahedral.
Found 22B4/S4 6 cell glider (2014 April). (Small gliders are best,
as it may be easier to create a gun.)
Found 3D 12B3/S3 c/2 p14 kite glider (2014 April).
Found 9B34/S3 c/2 p16 glider (2014 March).
Found 2D 12B4/S356 glider.
Found a way to bounce a Andreen p18 glider. (Needs a big field).
Reorganized icons directory.
Backed out tetrahedral-octahedral stuff.
swallow tail glider for standard c/2 p2 glider found for 12B46/S356
Now map top of objects as clickable in Life3D and Life4D. (Use "("
and ")" to go down and up respectively).
"round" option added to life versions for round or spherical cells.
26B58/S58 rule has a light speed replicator and a few gliders.
New format: 3 or more consectutive numbers are reprsented with
a dash between the first and last number, by default. Considering
some 3D Day and Night rules and it got too painful.
A 40 cell 2D 9B34/S3 glider found (2013 March).
Tail found for standard 3D 26B5/S8 glider (p4) (2013 January).
Another tail found for standard 3D 26B5/S8 glider (p2) (2013 February).
Dialogs now use swing.
Asym glider found in 3D 12B3/S3 (2012 September).
Game canvas now has default focus when applet comes up.
Scrolling menus showing life pattern names now work with scroll mouse.
Fixed "mouth" on ant3d (occasionally was drawn on wrong face).
Oops noticed an Andreen pattern was moving... that makes it a
new p9 glider (2012 July).
Noticed oval traffic light buttons on Ubuntu, fixed in
ant*, life*, and loop.
Multistate life forms can now be read from menu in life2d (make
sure states=4, neighbors=8, and rule=B5/S678).
Found orthogonal ship (c/2, p2) for 3D 26B5/S25 (2012 June).
Sorting so that front stuff is always drawn last. Before it was
approximated. For life3d, life4d, and ant3d.
Added linked list for looping through life (and loop) iterations.
Fixed birthing rule for "0".
For help in searching, a way of throwing out blobs was added.
Default is 60% of life form does not change, it will not print.
12B456/S45 another glider found orthogonal to existing glider c/4, p8
smaller and faster (2012 May).
Found a turbulent p93 spinner for triangular 12B3/S278 (2012 April).
My first thought was to make a glider gun using two of these but
p18 gliders can not be 93 generations apart. The p80 gliders can
be 186 generations apart (by the self destruction of every other
glider). Finding how to do this is tricky as p80 glider itself
creates a lot of turbulence.
Finally fixed a long standing bug where found lifeforms are added
to list of signatures to ignore. This would fail randomly
resulting in finding lifeforms that were found already.
Edge detection added, so far it does not seem useful, turned off
when there is no wrapping. Might be useful for discovering guns.
Now can print out seed if grows large (possibly unbound), it may
help in looking for replicators.
12B456/S45 glider found orthogonal to existing glider (2012 March).
B/S format used by default now instead of S/B in Bays' papers.
I think its easier to read the way it was, as an embedded
'S' looks much like a '5', but its a losing argument against
Wikipedia. Sync'd these notes as well.
Life2d enhancement to allow 4 state cells to simulate 3D 26B5/S678
between two plane barriers (barriers 4 cells apart and life
forms are contained in 2 planes). (Carter Bays explored
this in one of his papers). Same update made for life3d and
life4d but do not know a good rule to use it. No glider
found for this 4 state rule (-states=4 -rule=B5/S678).
bkgd = 0, red = 1 (cell on plane 0), yellow = 2 (cell on plane 1),
green = 3 (cells on both planes). Since colors now have a
different meaning here, colorized "aging" of cells is turned off.
2 new period 4 gliders for 2D 9B34/S3, one asymmetrical 22 cell,
the other 34 cell, also same rule, period 8 glider 40 cell.
Also new configuration of quad glider found for 26B5/S45 for 3D.
First glider found for 3D 26B67/S67, 40 cell (orthogonal p2)
Ball glider (orthogonal p4) found 80B_10/S9_10_11 for 4D (2011
December). New 28 cell asym orthoganal 26B5/S45 for 3D. Also
found some "in tow" gliders 12B46/S356 for 2D and 26B5/S58 for 3D.
Also just realized that there are two similar gliders for 5B2/S24.
Life3D and rhombic dodecahedral life now uses even cells instead
of odd (similar to Life4D). I think this is more straight
forward as (0, 0, 0) would contain a cell. All life3d.xml
dodecahedral life forms for these were shifted one cell.
New find mechanisms to search for certain periods and size or
certain signatures... but periods themselves would be otherwise
New menu scrolling added so do not have life form choices falling
off bottom edge of screen.
New glider(c/5, p5) found in 26B67/S57 for 3D (2011 November).
New glider(c/3, p3) found in 26B6/S567 and
new quad glider(c/3, p3) found in 26B5/S45 for 3D.
New bow tie glider(diagonal p2) found in 80B_10/S9_10_11, and
orthogonal glider (c/4, p8) found in 80B_10/S_13_14_15_16_17
for 4D. (2011 October)
New orthogonal glider (p3) found in 26B5/S56 for 3D (2011 September)
and new orthogonal glider (p6) found in 80B_10/S9_10_11 for 4D.
New glider (p4) found in -18B4/S46 (2011 August) for Rhombic
Dodecahedral life (this is an alternate 18 neighbors rule 12 faces
and 6 corners of a rhombic dodecahedron honeycomb).
New glider (p12) found in 24B4/S678 and (diagonal p2) found in
24B4/S67 (2011 July) for 4D Icositetrachoric life.
Added Icositetrachoric honeycomb to life4d. Currently investigating
24B4/S5 and 24B4/S67 (where it looks like a replicator was found).
In Life3D, in 12B3/S456 a E forger was found which has same signature as E.
Added "stirring". Relax the rules for a few iterations to stir pot.
One speed-up to searching may be to find signature and see if
signature is repeating or in list of known objects. Not sure
Added another switch to randomly rotate in 4D, off by default as
it may be too confusing. This overrides another switch which
just rotates a 4D object in 3D (this is on by default).
Reorganized life3d forms to life3d.xml and this is portable to
life3d.h for xlock. Now names and data are now together so there
should be less goofs on mismatched names. Similarly for life2d
and life4d. New rules and forms can be added to xml and then
just restart to see in app.
Added fillPercent option which defaults to 30.
New gliders found (2011 May).
3 new puffers found for life3d B5/S36.
1 new asym glider found for life3d B5/S45.
1 new asym glider 36 cell found for life3d B6/S567.
1 diagonal glider found life3d B5/S58.
1 orthogonal ball glider found life4d B_12/S_11_12_13_14_15.
Took out JPopup and put in JMenu stuff from application. Would have
done before but did not realize Applet needs to be JApplet for this
Added border for htmls thanks to
Added Attach/Detach thanks to code snippet Code Ranch and JavaKB by
Also found something in stackoverflow from Alex for resizing JFrame.
Synchronized the life pulse so that resize (or moving zone slider in
Life4D) would not cause corruption (still a problem for Life3D
Random soup now configured properly for truncated octahedral.
Oops, I think I messed up order of operations for the detach stuff and
broke a few non-life non-square stuff, fixed.
Added 2 more triangle rules from Carter Bays' applet.
Ant in a Cairo Tiling, rule 2 is a beaut (2011Feb21). Also works for
alternating 10 bits, or left side all 1's with right side same number
of 0 bits (i.e. 10,12,42,56,170,240... or combination of p & q:
p[n+1]=2^(2*n+1)+p[n] q[n]=2^(2*n)-2^n, where n >= 1 & p = 2
loop: other rules for neighbors = 4 should now work.
life2d fix to run nontotalistic rules from command-line.
New life forms discovered (2011Apr) highlights are Neighbor 6 p16,
a larger Neighbor 9 ship, and asym ship (c/2) as well as a slower
(c/3) ship for Neighbor 12 B46/S356.
For 3D, a new B6/S57 4c/7 snake ship and a orthogonal glider for
B5/S678 (which already has 3 other known diagonal gliders)
Changed internal data structures in life to conform with what was
needed in loop.
Fixed bug in hexlife when grid is changed.
A 3d glider icon for life3d and life4d.
Loop, ant2d, and ant3d applets created.
Table stuff for ant2d and ant3d, this allows access to a handful of
static tables for rules. First rule is the default rule.
ant2d: sharp turns allowed for hexagons.
2011Jan7 life4d: finally found "the" major bug (in checkAliveBounds)
... now finding new patterns, including new glider for 4D analog of
of 3D 26B5/S45: a 80B_10/S9_10_11 "heli glider".
Added Life Buffer that buffers to screen.
ant3d: mouth enabled for neighbors = 12
Added wireframe for 3D/4D.
Added unbound option. So far it just checks if grown large but may
print out initial soup later.
ant2d: truchet enabled for squares, triangles and hexagons
ant2d, ant3d: some of the more known boring rules are not available from
increment spinner. For 2D those without a 1 or a zero in binary.
For 3D you have to have 3 out of 4 digits in base 4. You can insist
by using a command line option.
Added non-3D symmetries for Life4DSoup.
Lots of cleanups in Life2D and Life3D. 1Oct2010, a new Life4D started.
Get in the zone. :) Added very basic patterns and only where
gliders from Lee Meeker's Master's Thesis were discovered. Randomizer
not optimized in any way for 4D.
Truncated octahedral form for Life3D added 11Oct2010. Most promising
so far is B46/S34 and B56/S3. 13Oct2010 glider found for B4(6)/S34.
Fixed signature as a little more buffer is needed.
Added a visible option in setup. So it does not spend CPU drawing
when you do not want it to. Will redraw when overlayed by another
window... leaving that so you can at least check that its running.
Bug fix for Birth checkboxes would cause rule to change to default.
Letters reordered to allow for new buttons.
Speed can be slowed down more now.
Lissajous (the change in perspective) for Life3D and Life4D can now
be turned off in setup.
Grid resize no longer destroys life form.
Ability to type in rule to adjust quickly on main window.
Pattern search options and basic setup separated.
Slightly improved shading for 3D cells.
Can now set rule as a command-line option.
New command-line options to make search more automated:
excludeCount, searchCount, excludePeriod, searchLength
nice java -jar Life3DApp.jar -neighbors=26 -rule="B67/S67"\
-excludeCount=6 -searchCount=100 -excludePeriod=24\
-searchLength=250 -visible=0 -gliderSearch=1 -delay=0\
excludeCount - min gen exclude count
excludeCount - min gen exclude count
searchCount - max number of cells in lifeform
excludePeriod - period factor to exclude, i.e. 6 would exclude 2, 3, & 6
searchLength - max gen count from initial soup generation
Then simply go to search and select a search.
Added Random Orient option, on by default. Randomly orients the
stuff from Forms.
Cleaned up menu look.
Java - Older Releases
Now can generate db of signatures from found objects. This is
used to help find new objects. This is does not work for multiple
objects yet, which makes it pretty useless for Conway's life where
there is a lot of blinkers, etc.
Fixed rhombic dodecahedrons to only drawing every other point.
X + Y + Z is always an odd number
(I was discovering all sorts of new weird lifeforms until I realized... :))
10Apr2009 Life3d implemented in Java.
Added a way of rotating and flipping a selection.
Holding Control key down and use mouse to copy and paste.
1st 5 neighbor Pentagonal glider found B2/S24 (19Mar2009).
#Name glider (c/2, p4)
#P -4 -2
AVJD - up, down, left, right pentagons, always starts with up
pentagon, with up/down/left/right on one row
1st 9 neighbor Triangular glider found B34/S3 (17Mar2009).
#Name glider (3c/20, p20)
#P -3 -1
AV - up, down triangle, always starts with up triangle
Fixed triangular mouse mapping.
Fixed various bugs for accessing noncataloged rules.
Fixed default setup menu for rule.
Fixed changing of bits, so as to set a new menu default in setup when
Found a bunch of triangular patterns many of them due to making random
triangular and hexagonal symmetries.
Added search for patterns and gliders with signature from xlock.
Pentagonal symmetries added, got a read, write and print to work also.
Up and down pentagons in Cairo tiling easier to click on.
First release (synchronized release number with other projects).
Allow change from Conway's Life through setup.
Implement get and write.