This is the ash left behind by Schneelocke's 30K-generation methuselah, Ed. In the image, the pattern is clustered into objects (connected components of nonzero cells), each of which is coloured either blue, red or green depending on whether the pattern is a still-life, p2 oscillator or something rarer, respectively.
You may think that this was produced by a Python script (which would be slow). Instead, it was generated simply by running rules in Golly. To classify the ash of a methuselah, perform the following steps in succession:
- Run the methuselah to completion in B3/S23, and discard any escaped spaceships.
- Convert to the rule CoalesceObjects, and run for the maximum period of any constituent object.
- Convert to the rule ClassifyObjects, and run for the maximum size of any constituent object.
I'm also going to write a third rule to identify and delete especially common objects such as blocks, blinkers and beehives. This 'pre-processing' will confer a significant performance advantage over solely using a Python script for censusing objects. I want the performance bottleneck to lie in QuickLife running the pattern to completion, rather than my script censusing the output.
Okay, so I suppose I ought to explain my motivation. I'm designing a soup search script, along the lines of Nathaniel's soup search and Andrzej Okrasinsky's screensaver (but entirely in a Golly script). A slight difference is that the soups will be 16-by-16 rather than 20-by-20, being SHA-256 hashes written in a square grid.
A much more significant difference is that this will be the client script of a peer-to-peer cryptocurrency I'm designing (inspired by the CAcoin thread on these forums) where the proof-of-work is finding Life soups that either have long stabilisation times, or produce rare objects, or some combination thereof.
Specifically, the 'score' of a soup will be the sum of its stabilisation time and any 'bonuses' awarded by the presence of rare objects. Bonuses associated with things like pulsars and pentadecathlons will be preset, whereas bonuses associated with rarer objects discovered by this soup search will depend on the rarity (as determined by the search itself!) and fluctuate over time. If the score of the soup exceeds a given difficulty target, you win that particular vertex of the blockchain.
I'm hoping that this will appeal to both Life enthusiasts and cryptocurrency aficionados alike, for several reasons.
1. There will be the same competitive enjoyment as the original soup search, although this will probably be faster due to the optimisations mentioned above.
2. There will be the prospect of making new Life discoveries.
3. Financial incentives for mining are automatically incorporated, as they are with Bitcoin.
4. There isn't a cat in hell's chance that mining the cryptocurrency will be the sole preserve of people with bespoke ASICs, since no conceivable ASIC would be significantly faster than Golly running on a general-purpose PC. Litecoin and Primecoin were also designed with this in mind.
5. It produces pretty pictures!
Anyway, you probably want the rules themselves. Here they are in the Golly 2.5 rule format:
CoalesceObjects.rule
Code: Select all
@RULE CoalesceObjects
A variant of HistoricalLife which separates a field of ash into
distinct objects.
state 0: vacuum
state 1: ON
state 2: OFF
@TABLE
n_states:3
neighborhood:Moore
symmetries:permute
var a={0,2}
var b={0,2}
var c={0,2}
var d={0,2}
var e={0,2}
var f={0,2}
var g={0,2}
var h={0,1,2}
var i={0,1,2}
var j={0,1,2}
var k={0,1,2}
var l={0,1,2}
var m={0,1,2}
var n={0,1,2}
var o={0,1,2}
var p={0,1,2}
# 3-neighbour birth/survival
h,1,1,1,a,b,c,d,e,1
h,1,1,a,1,b,c,d,e,1
h,1,1,a,b,1,c,d,e,1
h,1,a,1,b,1,c,d,e,1
h,1,a,1,b,c,1,d,e,1
# 2-neighbour survival
1,1,1,a,b,c,d,e,f,1
1,1,a,1,b,c,d,e,f,1
1,1,a,b,1,c,d,e,f,1
1,1,a,b,c,1,d,e,f,1
# Bridge inductors
e,1,1,1,1,h,i,j,k,2
e,1,1,1,h,1,i,j,k,2
e,1,1,1,h,i,1,j,k,2
e,1,1,h,1,1,i,j,k,2
e,1,1,h,1,i,1,j,k,2
e,1,1,h,1,i,j,1,k,2
e,1,1,h,i,1,1,j,k,2
e,1,h,1,i,1,j,1,k,2
# On state dies and becomes the history state
1,i,j,k,l,m,n,o,p,2
2,i,j,k,l,m,n,o,p,2
# Off state remains in off state by default
@COLORS
1 255 255 255
2 127 127 127ClassifyObjects.rule
Code: Select all
@RULE ClassifyObjects
This passively classifies objects as either still-lifes, p2 oscillators
or higher-period oscillators. It is mandatory that one first runs the
rule CoalesceObjects.
state 0: vacuum
state 1: input ON
state 2: input OFF
state 3: ON, will die
state 4: OFF, will remain off
state 5: ON, will survive
state 6: OFF, will become alive
state 7: ON, still-life
state 8: OFF, still-life
state 9: ON, p2 oscillator
state 10: OFF, p2 oscillator
state 11: ON, higher-period object
state 12: OFF, higher-period object
@TABLE
n_states:13
neighborhood:Moore
symmetries:permute
var da={0,2,4,6,8,10,12}
var db={0,2,4,6,8,10,12}
var dc={0,2,4,6,8,10,12}
var dd={0,2,4,6,8,10,12}
var de={0,2,4,6,8,10,12}
var df={0,2,4,6,8,10,12}
var dg={0,2,4,6,8,10,12}
var dh={0,2,4,6,8,10,12}
var la={1,3,5,7,9,11}
var lb={1,3,5,7,9,11}
var lc={1,3,5,7,9,11}
var ld={1,3,5,7,9,11}
var le={1,3,5,7,9,11}
var lf={1,3,5,7,9,11}
var lg={1,3,5,7,9,11}
var lh={1,3,5,7,9,11}
var a={0,1,2,3,4,5,6,7,8,9,10,11,12}
var b={0,1,2,3,4,5,6,7,8,9,10,11,12}
var c={0,1,2,3,4,5,6,7,8,9,10,11,12}
var d={0,1,2,3,4,5,6,7,8,9,10,11,12}
var e={0,1,2,3,4,5,6,7,8,9,10,11,12}
var f={0,1,2,3,4,5,6,7,8,9,10,11,12}
var g={0,1,2,3,4,5,6,7,8,9,10,11,12}
var h={0,1,2,3,4,5,6,7,8,9,10,11,12}
var pa={0,3,4}
var pb={0,3,4}
var pc={0,3,4}
var pd={0,3,4}
var pe={0,3,4}
var pf={0,3,4}
var pg={0,3,4}
var ph={0,3,4}
var qa={5,6}
var qb={5,6}
var qc={5,6}
var qd={5,6}
var qe={5,6}
var qf={5,6}
var qg={5,6}
var qh={5,6}
2,la,lb,lc,dd,de,df,dg,dh,6
2,a,b,c,d,e,f,g,h,4
1,la,lb,lc,dd,de,df,dg,dh,5
1,la,lb,dc,dd,de,df,dg,dh,5
1,a,b,c,d,e,f,g,h,3
5,qa,qb,qc,pd,pe,pf,pg,ph,7
5,qa,qb,pc,pd,pe,pf,pg,ph,7
5,a,b,c,d,e,f,g,h,11
3,qa,qb,qc,pd,pe,pf,pg,ph,9
3,a,b,c,d,e,f,g,h,11
4,qa,qb,qc,pd,pe,pf,pg,ph,12
4,a,b,c,d,e,f,g,h,8
6,qa,qb,qc,pd,pe,pf,pg,ph,12
6,qa,qb,pc,pd,pe,pf,pg,ph,12
6,a,b,c,d,e,f,g,h,10
# Propagate interestingness
7,11,b,c,d,e,f,g,h,11
7,12,b,c,d,e,f,g,h,11
7,9,b,c,d,e,f,g,h,9
7,10,b,c,d,e,f,g,h,9
8,11,b,c,d,e,f,g,h,12
8,12,b,c,d,e,f,g,h,12
8,9,b,c,d,e,f,g,h,10
8,10,b,c,d,e,f,g,h,10
9,11,b,c,d,e,f,g,h,11
9,12,b,c,d,e,f,g,h,11
10,11,b,c,d,e,f,g,h,12
10,12,b,c,d,e,f,g,h,12
@COLORS
1 255 255 255
2 127 127 127
7 0 0 255
8 0 0 127
9 255 0 0
10 127 0 0
11 0 255 0
12 0 127 0