## Use Smoothiness to classify rules

For discussion of other cellular automata.

### Re: Use Smoothiness to classify rules

BlinkerSpawn wrote:Instead of expressing dynamic difference purely on the difference between rulestrings, weight the changed neighborhoods based on the frequency in which they appear naturally in the two rules. (I say check both rules to preserve transitiveness of the dynamic difference and give a more refined estimate)

The suggestion above for analyzing both rules' neighborhood frequencies seems like something I should have thought of a while ago while thinking about improving the naive frequency analysis. A dramatic change in transition frequency on the same initial patterns for any of the active birth/survival conditions in either rule would be rather indicative of a change in behavior, in addition to the simple "more common = more influence" association. So...

- The lower the difference between the frequency of each neighborhood resulting in a central ON cell in either rule, the higher the score.
- The lower the frequency of neighborhoods which differ in central cell outcomes between the rules, the higher the score. This applies to both rules.
- Higher scores suggest closer behavior.
Sphenocorona

Posts: 480
Joined: April 9th, 2013, 11:03 pm

### Re: Use Smoothiness to classify rules

Sphenocorona wrote:
BlinkerSpawn wrote:Instead of expressing dynamic difference purely on the difference between rulestrings, weight the changed neighborhoods based on the frequency in which they appear naturally in the two rules. (I say check both rules to preserve transitiveness of the dynamic difference and give a more refined estimate)

The suggestion above for analyzing both rules' neighborhood frequencies seems like something I should have thought of a while ago while thinking about improving the naive frequency analysis. A dramatic change in transition frequency on the same initial patterns for any of the active birth/survival conditions in either rule would be rather indicative of a change in behavior, in addition to the simple "more common = more influence" association. So...

- The lower the difference between the frequency of each neighborhood resulting in a central ON cell in either rule, the higher the score.
- The lower the frequency of neighborhoods which differ in central cell outcomes between the rules, the higher the score. This applies to both rules.
- Higher scores suggest closer behavior.

Although I don't fully understand your formulation here, I need to clarify I am NOT against this approach by any means. My previous explanation is merely clarifying any misunderstanding. Moreeover, I think this approach will definitely make an improved metric to measure difference between dynamics. I know it because it's fundamentally related to the idea of local information: collect information about your local neighbourhood before any aggregation. I was calculating density of a single cell over 11 generations, which is on a temporal dimension whereas here you are collecting info from spatial dimension. Although I would argue lacking temporal information would drastically reduce its capability, but nevertheless it's still better than 0/1 info alone.

The reasoning behind local information is outlined in my blog but currently only available in Chinese. But think about it: whenever you take an average or deviation on a random variable, you are ignoring the identities of individual elements. If the random variable can only take 0/1, this means you can shuffle the universe violently but keeping your random variable unchanged. Obviously when you shuffle the universe, any interesting structure like glider/linear growing pattern fades away, and in aggregating along the spatial/temporal dimension, we lose information about how bits are organised locally. One way to avert this problem is to enrich your random variable before the aggregation, though it's an open question about how to enrich it and what metric to use after enrichment.

Transition frequency is certainly a more favourable metric than 0/1 state on its own, since it incorporates local information before any aggregation. I will outline the minimal implementation I can think of here:

1. Convolve a pattern to identify its neighborhood.
2. Aggregate the spatial dimension into a sequence of 18 B/S neighborhoods, but keep the correspondence between two trajectories.
3. Use KL divergence/ Mutual Information/ any suitable metric to measure the dissimilarity between the two aggregated vectors.
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

Existence of diagonal lines are strongly indicative of complex dynamics (sufficient but not necessary, though with very rare outliers). It'd be great if some can suggest how to abstract this information. An examplar collection can be found here

Example:
b1ce2e3eijkr4ejqrtwz5cn6aikn7es01c2in3aejkr4ejkqtyz5ckq6ceikn
aka,
B12e3eijkr4ejqrtwz5cn6-ce7e/S01c2in3aejkr4ejkqtyz5ckq6-a
aka
0781dacd5bd3d20501ce483466

shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

If you don't mind me asking, what do the axes of the graphs represent again? (in your most recent tests, anyway?)
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Posts: 1883
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

### Re: Use Smoothiness to classify rules

Sorry for being poorly annotated. The axes haven't changed much from last plots. It's still time-points/step-numbers. At stepnumber=1, the soup is initialised with 50% density (which I consider max-entropy distribution). A trajectory of 36 steps was generated, and correlation/pairwise metric is calculated pairwisely.

The only difference here, is the "step". In desnifluct.m, a sequence of length (say 110001) is grouped together into a single cell with averaged density (and hence the name densifluct.m). Thus the axes actually stand for megasteps, 1 megastep=6 microstep.

I hope that clarifies.
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

Strange observation:

Since I use diagonal strips as indication of complex dynamics, any false positive should be paid enough attention.

For example
b01ce2acein3ckqy4akqrw5ei6acis01ce2acik3cikq4cejknqtw5ejkq6ce
This rule show diagonal strips in its profile, but do not show conventional complex dynamics
-2.1356.mcov.0.0144.std.0.5001.densi.2dntca-b01ce2acein3ckqy4akqrw5ei6acis01ce2acik3cikq4cejknqtw5ejkq6ce.01e842611ed01779706913f85f.jpg (46.81 KiB) Viewed 4472 times

The profile above is also highly indicative of ring dynamics, as can been seen in other ring-dynamics-related rules such as,
b02acein3acekr4ejknrw5ckr6ck7ce8s1e2aikn3aenry4eijkrz5aikry6cn8
-2.1059.mcov.0.0340.std.0.5009.densi.2dntca-b02acein3acekr4ejknrw5ckr6ck7ce8s1e2aikn3aenry4eijkrz5aikry6cn8.32016f6cd0a48685bfcf38c0d9.jpg (40.42 KiB) Viewed 4472 times

I am suspecting the former rule has its complex dynamics restricted to the ring, but I can not think of an easy way to test this hypothesis.
`x = 92, y = 79, rule = B012-k3ckqy4akqrw5ei6aci/S012acik3cikq4cejknqtw5ejkq6ce28\$30bob2ob5ob2ob2o4b7ob2o\$29b7o4b5o2b3obo2b6o\$29bo2b2o2b3o2b6o3bo2b6o\$29b9ob7ob3ob2o2b3obo\$29bob8o3b3o2b5ob3ob3o\$31b3obo2b8o2b12o\$29b6ob2ob3ob2o3b4ob5obo\$29bob2ob6ob3ob2ob2o2bobo3b2o\$30b7ob9obob5o2b2o\$30b2ob5obob3o2bo2b2o2bo2b2obo\$29b7ob4obob16o\$29b7o2b10o2b3obo3bo\$31b5obob3ob4obo2b4ob4o\$29b4ob3obob4ob4ob2o2b6o\$29b6o2b6ob2o3b8o\$29b4obob14obo2bob4o\$30b10o3b4ob12o\$29b3ob3obob4ob2o2b3o2b6o\$29bob6ob4ob2ob4ob9o\$30b9ob4ob4ob4ob2ob2o\$29b2o2b15ob6o2bobo\$30b4o2b4ob6ob12o\$29b6obo2bob3obo2b2ob3obob2o\$29bob3ob9o2b2ob7ob2o\$29b7o2b3o2b4o2b2obob2ob3o\$29bob6o2b8obob6o2b2o\$29b6o2b2o2bob17o\$29b3ob16ob3ob2ob3o\$30b3ob3ob2o3b2ob6o2bob2obo!`
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

I had a closer inspection at the totalistic rulespace and scanned 20% of the 2^18 rules. It is obvious that TCA-rulespace constitutes a higher proportion of quiescent (quick stabilising) rules, whereas a random rule from NTCA rulespace is less likely to be quiescent.

TCA quiescence rate ~25%
NTCA quiescence rate ~2.5%

The other observation is shaking my hypothesized connection between diagonal strips and complex behavior. Because in TCA samples there are too many examples where a diagonal profile comes with an ordinary dynamics. Out of the ~25 samples I collected only 2~3 exhibits glider/replicator dynamics, whereas 80%-90% of NTCA diagonal-strip samples give up to glider/replicator dynamics. I start to wonder diagonal strips are really reminiscent of some periodic behavior, but these assertions need a closer inspection.

PS: One of the glider rule emerged from TCA search is B3/S357.
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

Update: The aforementioned diagonal is indeed a signature of periodic behavior. Diagonal is separated by 20 steps, which is the time required for an speed c/1 spaceship to traverse the torus space. If the native spaceship has a speed of c/2, then the period would be torus_width * 2.

This signature is useful in quantifying spaceship abundance in candidate rules.

I have outlined this construction here
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

I'm constructing a 3-coordinate system to classify the dynamics. It got some reasonable discriminative power so far.
The coordinates are based on a hypothetical local temperature along with average cell density.

See a sample plot here. You need to use set_NTCA_canonlised.py to translate the rule-string into B/S notation.
set_NTCA_canonlised.py
`## This script generate an ECA rule and emulate it on a torus of width 200. ## Written by Feng (shouldsee.gem@gmail.com) Feb 2017.import gollyrnum0=golly.getstring('NTCA number',golly.getclipstr());# asc=ord(rnum)# golly.note(str(lst))# golly.note(rnum)# golly.note(str(~sum(lst)));lst=list([x=='-' for x in  rnum0]);if sum(lst)==0:   rnum=rnum0;   passelse:   rnum=rnum0.split('/')[-1].split('-')[1]   # golly.note(str(lst2))try:   r0=bin(int(rnum,16))[2:].zfill(102);except:   rnum0=rnum0.split('/')[-1];   lst=rnum0.split('.');   lstlen=list(len(x) for x in lst);   rnum=lst[lstlen.index(26)];   r0=bin(int(rnum,16))[2:].zfill(102);# golly.note(str(len(r0)));# golly.setclipstr((r0));# golly.note('copied')r=r0[::-1];henseldict=['b0_','b1c','b1e','b2a','b2c','b3i','b2e','b3a','b2k','b3n','b3j','b4a','s0_','s1c','s1e','s2a','s2c','s3i','s2e','s3a','s2k','s3n','s3j','s4a','b2i','b3r','b3e','b4r','b4i','b5i','s2i','s3r','s3e','s4r','s4i','s5i','b2n','b3c','b3q','b4n','b4w','b5a','s2n','s3c','s3q','s4n','s4w','s5a','b3y','b3k','b4k','b4y','b4q','b5j','b4t','b4j','b5n','b4z','b5r','b5q','b6a','s3y','s3k','s4k','s4y','s4q','s5j','s4t','s4j','s5n','s4z','s5r','s5q','s6a','b4e','b5c','b5y','b6c','s4e','s5c','s5y','s6c','b5k','b6k','b6n','b7c','s5k','s6k','s6n','s7c','b4c','b5e','b6e','s4c','s5e','s6e','b6i','b7e','s6i','s7e','b8_','s8_',];rule=[i for x,i in zip(r,range(len(r))) if x=='1'];rs=[];alias='';others=[];# ps=1;primed=0;for i in rule:   s=henseldict[i];   alias=alias.rstrip('_');   if primed:      if s[0]==sold[0]:         if s[1]==sold[1]:            alias+=s[2]         else:            alias+=s[1:];            primed=1;      else:         others.append(s);         # pass         # break         continue   else:      alias+=s;      primed=1;   sold=s;alias=alias.rstrip('_');primed=0;for s in others:   alias=alias.rstrip('_');   if primed:      if s[0]==sold[0]:         if s[1]==sold[1]:            alias+=s[2]         else:            alias+=s[1:];            primed=1;      else:         others.append(s);         # pass         # break         continue   else:      alias+=s;      primed=1;   sold=s;alias=alias.rstrip('_');      # alias+=str((a)%9)# if ps==1:#    alias+='s';golly.setalgo("QuickLife")# golly.note(alias)curr=golly.getrule().split(':');if len(curr)>1:   curr=':'+curr[1];else:   curr='';golly.setrule(alias+curr);golly.setclipstr('\n'+alias);`
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

I wrote a package taking an 2dNTCA rule-string, profile it, and display in a webpage. You can download it and run it on your machine. Note it calls many external modules and is really intended for web deployment. calc_temp_v1

UPDATE: The program now lives at a git repo called calc_temp
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

I have recently deploy the algorithm to an online interface. You can query the server in the following format.
`http://www.newflaw.com/query/2dntca_322017040a86573465f4446d50`

Currently it only supports 2dNTCA rulestr.
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

wildmyron wrote:I am curious how the rule below fits into the classification scheme you have been working on here.

There are no known gliders but it seems possible that there are gliders of a sort on some periodic tiling.

`x = 90, y = 90, rule = B345678/S012678:T90,90obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$44o2b44o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$90o!`

Hi wildmyron,

I was having time coming back to this question. Note I removed S0 from the rulestr because my B/S--NTCA translator is choking on them.
BS_Trulestring: B345678/S12678
2dntca string: 3f9fbe3e001fff07e07e15eea0
query page: http://www.newflaw.com/query/2dntca_3f9 ... e07e15eea0
cached result page: http://www.newflaw.com/calc_temp/temp_2 ... 5eea0.html
Conclusion is: resonably complex and not too chaotic, but no evidence of abundant gliders.
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

I have got some spare time to update my scripts, and it will be coming in the form of a Django app.

Current problem: Stat does not converge, especially when maximum is hard to identify and the curve is flat
Compiling rules of interest:
`good2dntca_279a65ab3496c62bfc1c02320f2dntca_3d9f26dab2a8f99dd11f33ebeefine2dntca_1c8c8a18b2aaac3142507a25602dntca_3d6b104fc58e7fdffb59ac3e68bad2dntca_3616332aca5f552773e14b01902dntca_3e6aabcb78eec1754ca57d041e2dntca_0658d07674334de73d60c290d0???2dntca_20ec1dc3fce292c535ca344008`

Early results
`x = 128, y = 128, rule = b1ce03aenr2acikn5cjr4ceijknz7ce6cek8s1c3iny2aen5j4aceknrwy7ce6aceikn8:T128,128 2ob3o2bo3b2o2b2o2b2o2bobo2bo3b3obob2obobo5b2o2bob4ob2obo2b2o5b2ob2ob3o2b5obobo3b2o3b4o8b8o3bo\$2b2obob2o4b2o2bo4b2ob3ob2o2b6obobo4bobo4bo3bo2bobob2o2bob2o2bob2obob4obob3obo3bo2bobob2obo3b2obo3b2o3b2o2bo\$3bo2b6o2bo2b4ob2obob5o2b2o2b2ob3obo2bobo2bo4b2o2b3o3bo2bo2bo4b2o2bo7bob5ob2ob2o3b3o5b3o2bo2b3obo\$2o2b2obob2ob3ob4o3bob3o3b2o2b2ob2ob7o2bo2bo2bo3bobo2b5o2b3obo2bobo2bobo4bob2o2b4ob3ob2ob3obo2bob3o5bo\$4obo2bo3bo2b3obo2b3obob3ob2o3bobo2bobob2ob2o2b3ob4ob8ob3o7bobobo3b2obobob6o5bo3bobo4bo3b3obo\$2obob2ob4o5bob2o3b2obob3obob2ob2ob2o2bo2b2o2b2o6bobobob2o2b2ob3o2b2o4b4ob3o2bobobo4bo2bob5ob3ob2o2b6o\$2ob3o5bo2bob2o2b2obob2obo2bo2b3o2b3ob4obo2b2ob3ob3o5b3o3bo3b5o3bob3ob3ob2o3bo2b2obob2obob2ob4o2bob2obo\$3ob2obobob2o2bo5bobob2ob4o3bob2o4b4obobo3b4o2bob2o2bo2b2o5b2ob2o3bo2bob2ob2o2bob2ob3o3b3obo2b2obobob2o4bo\$2b4ob2o2bo2bob6o3b3o3b2ob2o2bo2bo3b2obo2b5obobob3ob3o4bo3b4o5bob2ob2ob2ob2ob4obo2bo2bobo4b3ob2ob2o\$2b3obo2b2o2bobobob3obob2ob2obobo7bob3o3b3o2bo4b4ob2obo4b2o2b4obo6b2obob3o3bobo2b4ob2o8b2o2b2o2bo\$3o2bo2bo5bob3obo2bobob3o5b2ob3o2bo4bo2bobo2bobob2o4bo2b2obo2bo6bo2bobo6bo4bobob4obo2bo3b5ob3o\$2b2obo3bo2b2o3bob2o3bo2bo5b3ob4o2bo2bobo2bo3b4o4bo2b3ob2obo2bo2bo2bo2b2obo3b3o2bo3bobob3obo2b3ob4ob2obo2bo\$3bo2bob4obo4b4o2bobo4bobo2bobo3bo6b9o2b3o3b2o8bobobo2b7obo4b3o2b5obo4b2o2bob3ob3o2bo\$2o3bobo2bobobob2o2bobob2ob3o4b8o5b2ob2o2bo3bo3b3obob6o3b4obobo2b4o2b3obob2o3bobo2bob4o2b2obobo3bo\$2obob3ob2obo4bob4o2b2o3bob2o2bo2bo2bobo2b4ob2o2b3obob3obobobo3bob2obo3bobo4bob2ob3ob2o2b2o4bo3b2o3bobo\$2o3b2o2b2o5bo2bobo2b6obo2bo2bob2o3b4o2b2obo2b4o13bo2b2ob2obo3bo2b2o3b2o2bo7b2obob2o3bobo2bob2ob2o\$4ob2o3bobobo2b2ob2o2bo5bo5bobobo4b3obo4bo4bobo3b2o7b2obob2o2b5o2bo3b2o3b2obo3bo4bo6bob2o3b3o\$2o6b6obobob2o6b2obob2o2b3obobobobobob4o3bo4b2obo5bo2b5o2bo2b4o3b4o5bo2b2o2b2o2bob2o3b2o2b2ob3o\$5b2ob6o4b2o2b3obo2bo3bo3b2obobo2b3ob3o2b2ob2o2bo2b2o2bobo5bo5bo2bobo2bo3bob3ob4ob4o2bo4bo2b3o2b2o\$4bobo4bob5o2b2o2b8obo6bo2b4o3bo2bobob2o3b2obo2bo6b2ob4o5b2o2bob2obo3b2obo3b2ob3o2b3ob2o4bo\$2o2b2o3bob2obobo2bo3bo3bo6bo2bob2obobob3o5b3obobo4b2o2bob3ob2ob3ob2o4bob2o2b2o3b2ob2o2bob2o4bob3ob2o3b2o\$3bo3b4ob3obo2b3ob3ob3o3bo3bo2b5o2b2o2bob2ob2ob2o3b2obobo2b2obobo3b4o2bob2obo3bob5obobo2bob11ob3o\$2o2bo2b3o2b2ob2ob5ob2obobob5ob2o8bo2b2o2bobobobob7o3bobob4o3bob2obo3bob2o3b2ob2ob3obobobob2o2b2obo4bo\$4o3bo2b2o2b3ob2obob3o3bo2bobo2bo4bo2bo2b9o2b2ob4o2bo4b2o2bobo2b2o2bo2b4o3bob2obo2bo3bob3o4b2ob2obo3bo\$2o2b2obo3b2ob6o2b5o2b3o2bobo5b2ob2obo2bo2bo2b2o2b2ob3o4b2o2bobob2o2b2o3bobob2ob2ob2obo3bob4obo2b3o4bobobo\$7ob4o3b4obob2o3b5o3bob3obo2b3o5b2o4bob3ob4o3b2obobo4b4o2b2o4bobobob2ob2o3bo2bobobobo3bo3bobo\$4bo2bo5b3o2b3ob3o3b2o3b2o2bobob2o2bobo3bobob6o2bobo2b4ob2obo3bob3obo4b6ob3o2b2ob2ob2o2b2o4b4obob2o\$2bo3bobo3bo3bob3ob2o4bo2b3obo2b4o2b3o3bobobo3bobobo5bo4b3ob2o6b2o2bo3b3o2b3obob2o2bobo3b2obo2bo\$2o5bob3ob2o2bob3ob3o3bo4bob3o2bo5bobobo2bo2b3o3b5o3b3o2b4ob3o2b2o2b2o2b2o2b2o5b3o3b3o2b4ob2o2b3o\$2b6o2b4ob2o2bo4bo4bobo5bo4b3obob2o2b3obo6b4o3b2o2bo2b6o2b3obobobo3b2o5bobo7bobo8b3o\$5bo3b6ob3o3b3o3b5o2b2o2bo6bo2b2o2bob3obo4b4o2bob4ob2ob2obobo3bo6b2o3b3obob6o2bobo2b3o2b3o\$4b3obobob4ob2o2bo3b4o4b2o2b6o3bobo3b3obo2bob3obo2b3o2bo6bobobo2bob2o5bobo4bo3b3o2b4o2bobo6bo\$2b2obo2b2o2b2ob2ob3obob3o2bobo3b5obo2bo2b2obob2obo5b4ob4o2b5o8bo13b3ob2ob2ob3obo4bo2bob3obo\$2bo2b2o2b2o3bo3bo2b2ob2obob2ob5obo2b5o2b4obo2b2o2b2o2b5ob2obob5ob4o3b2o2b2obobobob3o2b2ob2ob2o4bo2bo2bob2o\$3obob3o4bobobo2bob3obob2o2bob2ob2o3b2o2b2o2b3obo3b2o4b4o2b3obob3o6b2obob6o3bob2o2b2ob5o2bobob2o2b2ob2o\$5bobo2b4obobo2bob2obo6bobob2o2b2o4bobo2bo2bobo2bobobobob3obob4o2bo2b2obo3b2obo2b2o2bo4b6ob2ob2o5bo3b3o\$2b2o2b2ob6obobo2bobo2bobo2b4obobo2b3o2bo2bo2b2o4b6o3bobo4bo3bobobo5bo2b4obob2ob4obobob5obob4ob2o2bo\$2obo2bobo2bo5bobo2bobo3bobo3bob4o2bobob2ob2obo2bob5o3bobobo6b2o2b4ob5o2b2obo3b3obo4b2obobobo2bo4b4o\$2o2b2o2bob4ob4obobo3b3o3b4o4bob2o2bo2b2obob3o2bo4b3obob3obob4o2b4o2bo3bo2b3o8b4ob4ob2o2bob3obo\$2b3o4b3obob3obo2b4obobo3bo3bob3o3bo3b2o6bobo3bo2b4obob2ob2obob2o2bobo3b3obob3o2b3o3b4o7bobobo2bo\$3o3b5obobobob2obo2b4obo2b4ob2ob2o3b2ob3ob2obob3o5b3obo2bo3bobo3b6obo3bobo2b4o3b3o6bo3bo8bo\$2b6obobo2bo2b2ob2o5b3o5b2o2bo2b2ob2ob8ob2obo3bob2ob4o2bobo3b4ob4o3b2o4b3o4b2ob3obo5b5o\$2o7bo4b3o2bob2obo3bo3bo2b2o6b2ob2ob2o2b2ob2obob3o6b3ob5o2b2o4b5obobo2b2obo3bobobob3o2b3o6b2o\$5obo2bo2bob2ob3o2b3obo3b2o5b2o5bo3bo2b3o2b3obo4bo2b3ob4o2bo2bobo3bobo2bo2b7ob2obobo2b2ob2obo2bobob2o\$3bobob3obo2bo3b6obo2b3ob2o2bo2b2o3bob3ob4o2b2o2bob6o4bobob2ob2o4bo2b3o2b2o2b2o3bo2b2o3bobob5o4b2o\$2b2obo5b3obo2bo4bo2b5ob2obobobo4bob3obo2b2obob2obob6obob2o2b2ob2o2bo2bo3bo2bo5b4o2bobobo3bob6obo3b2o\$2o4b5ob3o3b2o3b2obobobo4b3ob2o7b2o2bo3bobobo2b2ob2o4b2obo2bob4o4bo2bo2bo5bob2o4bo2bob2ob2o2b3o2bo\$2ob3o2b5o2bob3ob3ob2o2b3obobo2b3o2bo5b2ob6obobo2b2o2b2o2b2ob2o2b2obo2bo2bo2b3ob4o5b2o2b3ob5ob2o3bo2b2o\$3bo2b2obob2obo2b2ob3o2b3obob2o2b3o2bo2b2obo3bobob2o6bob6obob3o2b2obo2b2o5bo2b2obobobo2bob3o2b3o2b2o2bob2o\$2b2o2bobob6obobo3b2obobob2o2b2ob3o2b3o2b2o4b3obo2b2ob2o2bobob4obob2o2b6ob3o4bo4bo2bobobo6bo4bo5bo\$3bob3o2bo3bobo4bobobob2o4bobo4b3o2b4ob2obo3bo4bobo2bo3b2o6b3obo3bobo4bo6b3obobob4ob2ob2ob4obo\$3b2o3b4o3bo2bo2bo3b2o2bob3o2bobobobobob5o3b2ob4o2b2obob2obo2bo2bobob2ob2o2bo2b6obob4ob2o3bo2bo3b2o5bobo\$2obo6b3obobo2bobo4bob2o4bob2o3b2obo4b2o7bo2bo3bobobob2o2bobobo2bo2b2ob2o3bo2bob3ob2obobob2obo2b2o3b2ob2obo\$4obo2b3ob3o4b2ob8obobobob2ob6obo3bo2b2obo2b7obo2bo6bo2b2o2b4o2bob2o2bob2ob5ob2obo2bo2b2o2b3obo\$3o2bob3o2b2obo2b2o3b2o2bob2o3bobobobobo2bo5b5o2b3o2bo2b2obo4bo6b2o2b6o4b2ob2o7b4o2b2obob3o2b5o\$4bob4ob4o3b2ob3o2bo7bobobob2obo2b3obob2obo2bo2bob2o2bob2o11b2o2b3o3b3ob3o2bo13b2ob3ob2o2bo\$3bo2bo2bobo3bob3ob2o2bobo3bo2bo3b3obobo3bobobobo3b2obo2b3ob2o3b2o3bob3o2bob2ob2o3bo4bo3b4ob2ob3ob2o4b3o\$3b10o5b2obobob2o2b3obo3bobo2b3obo5b5obobobo4bob3o3bob2obo2bob5obobob2o2b4ob3ob2obo2b5o7b2o\$2bobo5bob4o3bobo7bobob4o3b8o6bob3ob2obob3obob2o4bo2b5ob3o3bob2obob2o3bo7bobo2bo5b2o2bo\$4ob2o4b4o10b3o4bobob2ob2o3bobobo3b2o4b2o2bo4bo2bo3bob2o2bo2b3ob2obob3o2b2o2bob2ob3o2b3obobobobo2bo2bo\$4obobo3bo2bo8bobo3b4o3b2o3b4o3bo5bobo4b2o3bo2bo2bob3o3b2ob4o4bob10obo2b3ob3o2b3o4b2obo\$2o2b3obob2obo3b2obobobo2b2o4b3ob3o3b3ob3obo4b2o2bobo2bo2bo2b2o4b2o4bobob4o2b6o3bobo6bob2obo2bo2b3o2bo\$2o6b2o4b3o3bob2o2b2o2b4obo2b2o2b5o3b3obo2b4o5bob3o3b5ob3obo3bobo3bobo2b3o2bobob2o2b2o2b2o2bo2b4o\$2b2o2bob3ob3obo2bobo2b2o3b2o2b2o2b2obob5o2bob4o4bo5bo3b2o2b2o3b2ob4obobo3b2o2bob3obob4ob2ob3obobobo2bo\$5bo3bo5bo2b4ob2obob3ob2ob2o3b2ob2o7b5o2b2ob2o2bo7b4o2bob2o2b2obo2b2ob2o4bobo4bob2ob3ob3obo3bo\$3obo2bo2b3o2bo2bo2bo3b2o2b2ob4o2bo7bob2o3bo2bo4b2obo3bobo3b2obo2b2ob2o2bo3b2o7bob5obo3b2o2b4o2b3obo\$3o3bob3ob2o2bo2bo3b3ob2obob2o2bo4b2ob2o2b2obo2bo3bobo2b3obo3bo3b3o2b2o2bob4o4bob2o3bobob2obo5b3ob2o3b3o\$2o3b2o4bo2bo6b2ob2obobob2ob3obo2b3obobo2b4o2b4obo2b2ob2ob3ob2o4b2o2b2ob4ob2o3b2o3bobobo6b2o3b3obo4bo\$2ob3o2bo3b2o2b2o2b2o2bobo2bo3b3obob2obobo5b2o2bob4ob2obo2b2o5b2ob2ob3o2b5obobo3b2o3b4o8b8o3bo\$2b2obob2o4b2o2bo4b2ob3ob2o2b6obobo4bobo4bo3bo2bobob2o2bob2o2bob2obob4obob3obo3bo2bobob2obo3b2obo3b2o3b2o2bo\$3bo2b6o2bo2b4ob2obob5o2b2o2b2ob3obo2bobo2bo4b2o2b3o3bo2bo2bo4b2o2bo7bob5ob2ob2o3b3o5b3o2bo2b3obo\$2o2b2obob2ob3ob4o3bob3o3b2o2b2ob2ob7o2bo2bo2bo3bobo2b5o2b3obo2bobo2bobo4bob2o2b4ob3ob2ob3obo2bob3o5bo\$4obo2bo3bo2b3obo2b3obob3ob2o3bobo2bobob2ob2o2b3ob4ob8ob3o7bobobo3b2obobob6o5bo3bobo4bo3b3obo\$2obob2ob4o5bob2o3b2obob3obob2ob2ob2o2bo2b2o2b2o6bobobob2o2b2ob3o2b2o4b4ob3o2bobobo4bo2bob5ob3ob2o2b6o\$2ob3o5bo2bob2o2b2obob2obo2bo2b3o2b3ob4obo2b2ob3ob3o5b3o3bo3b5o3bob3ob3ob2o3bo2b2obob2obob2ob4o2bob2obo\$3ob2obobob2o2bo5bobob2ob4o3bob2o4b4obobo3b4o2bob2o2bo2b2o5b2ob2o3bo2bob2ob2o2bob2ob3o3b3obo2b2obobob2o4bo\$2b4ob2o2bo2bob6o3b3o3b2ob2o2bo2bo3b2obo2b5obobob3ob3o4bo3b4o5bob2ob2ob2ob2ob4obo2bo2bobo4b3ob2ob2o\$2b3obo2b2o2bobobob3obob2ob2obobo7bob3o3b3o2bo4b4ob2obo4b2o2b4obo6b2obob3o3bobo2b4ob2o8b2o2b2o2bo\$3o2bo2bo5bob3obo2bobob3o5b2ob3o2bo4bo2bobo2bobob2o4bo2b2obo2bo6bo2bobo6bo4bobob4obo2bo3b5ob3o\$2b2obo3bo2b2o3bob2o3bo2bo5b3ob4o2bo2bobo2bo3b4o4bo2b3ob2obo2bo2bo2bo2b2obo3b3o2bo3bobob3obo2b3ob4ob2obo2bo\$3bo2bob4obo4b4o2bobo4bobo2bobo3bo6b9o2b3o3b2o8bobobo2b7obo4b3o2b5obo4b2o2bob3ob3o2bo\$2o3bobo2bobobob2o2bobob2ob3o4b8o5b2ob2o2bo3bo3b3obob6o3b4obobo2b4o2b3obob2o3bobo2bob4o2b2obobo3bo\$2obob3ob2obo4bob4o2b2o3bob2o2bo2bo2bobo2b4ob2o2b3obob3obobobo3bob2obo3bobo4bob2ob3ob2o2b2o4bo3b2o3bobo\$2o3b2o2b2o5bo2bobo2b6obo2bo2bob2o3b4o2b2obo2b4o13bo2b2ob2obo3bo2b2o3b2o2bo7b2obob2o3bobo2bob2ob2o\$4ob2o3bobobo2b2ob2o2bo5bo5bobobo4b3obo4bo4bobo3b2o7b2obob2o2b5o2bo3b2o3b2obo3bo4bo6bob2o3b3o\$2o6b6obobob2o6b2obob2o2b3obobobobobob4o3bo4b2obo5bo2b5o2bo2b4o3b4o5bo2b2o2b2o2bob2o3b2o2b2ob3o\$5b2ob6o4b2o2b3obo2bo3bo3b2obobo2b3ob3o2b2ob2o2bo2b2o2bobo5bo5bo2bobo2bo3bob3ob4ob4o2bo4bo2b3o2b2o\$4bobo4bob5o2b2o2b8obo6bo2b4o3bo2bobob2o3b2obo2bo6b2ob4o5b2o2bob2obo3b2obo3b2ob3o2b3ob2o4bo\$2o2b2o3bob2obobo2bo3bo3bo6bo2bob2obobob3o5b3obobo4b2o2bob3ob2ob3ob2o4bob2o2b2o3b2ob2o2bob2o4bob3ob2o3b2o\$3bo3b4ob3obo2b3ob3ob3o3bo3bo2b5o2b2o2bob2ob2ob2o3b2obobo2b2obobo3b4o2bob2obo3bob5obobo2bob11ob3o\$2o2bo2b3o2b2ob2ob5ob2obobob5ob2o8bo2b2o2bobobobob7o3bobob4o3bob2obo3bob2o3b2ob2ob3obobobob2o2b2obo4bo\$4o3bo2b2o2b3ob2obob3o3bo2bobo2bo4bo2bo2b9o2b2ob4o2bo4b2o2bobo2b2o2bo2b4o3bob2obo2bo3bob3o4b2ob2obo3bo\$2o2b2obo3b2ob6o2b5o2b3o2bobo5b2ob2obo2bo2bo2b2o2b2ob3o4b2o2bobob2o2b2o3bobob2ob2ob2obo3bob4obo2b3o4bobobo\$7ob4o3b4obob2o3b5o3bob3obo2b3o5b2o4bob3ob4o3b2obobo4b4o2b2o4bobobob2ob2o3bo2bobobobo3bo3bobo\$4bo2bo5b3o2b3ob3o3b2o3b2o2bobob2o2bobo3bobob6o2bobo2b4ob2obo3bob3obo4b6ob3o2b2ob2ob2o2b2o4b4obob2o\$2bo3bobo3bo3bob3ob2o4bo2b3obo2b4o2b3o3bobobo3bobobo5bo4b3ob2o6b2o2bo3b3o2b3obob2o2bobo3b2obo2bo\$2o5bob3ob2o2bob3ob3o3bo4bob3o2bo5bobobo2bo2b3o3b5o3b3o2b4ob3o2b2o2b2o2b2o2b2o5b3o3b3o2b4ob2o2b3o\$2b6o2b4ob2o2bo4bo4bobo5bo4b3obob2o2b3obo6b4o3b2o2bo2b6o2b3obobobo3b2o5bobo7bobo8b3o\$5bo3b6ob3o3b3o3b5o2b2o2bo6bo2b2o2bob3obo4b4o2bob4ob2ob2obobo3bo6b2o3b3obob6o2bobo2b3o2b3o\$4b3obobob4ob2o2bo3b4o4b2o2b6o3bobo3b3obo2bob3obo2b3o2bo6bobobo2bob2o5bobo4bo3b3o2b4o2bobo6bo\$2b2obo2b2o2b2ob2ob3obob3o2bobo3b5obo2bo2b2obob2obo5b4ob4o2b5o8bo13b3ob2ob2ob3obo4bo2bob3obo\$2bo2b2o2b2o3bo3bo2b2ob2obob2ob5obo2b5o2b4obo2b2o2b2o2b5ob2obob5ob4o3b2o2b2obobobob3o2b2ob2ob2o4bo2bo2bob2o\$3obob3o4bobobo2bob3obob2o2bob2ob2o3b2o2b2o2b3obo3b2o4b4o2b3obob3o6b2obob6o3bob2o2b2ob5o2bobob2o2b2ob2o\$5bobo2b4obobo2bob2obo6bobob2o2b2o4bobo2bo2bobo2bobobobob3obob4o2bo2b2obo3b2obo2b2o2bo4b6ob2ob2o5bo3b3o\$2b2o2b2ob6obobo2bobo2bobo2b4obobo2b3o2bo2bo2b2o4b6o3bobo4bo3bobobo5bo2b4obob2ob4obobob5obob4ob2o2bo\$2obo2bobo2bo5bobo2bobo3bobo3bob4o2bobob2ob2obo2bob5o3bobobo6b2o2b4ob5o2b2obo3b3obo4b2obobobo2bo4b4o\$2o2b2o2bob4ob4obobo3b3o3b4o4bob2o2bo2b2obob3o2bo4b3obob3obob4o2b4o2bo3bo2b3o8b4ob4ob2o2bob3obo\$2b3o4b3obob3obo2b4obobo3bo3bob3o3bo3b2o6bobo3bo2b4obob2ob2obob2o2bobo3b3obob3o2b3o3b4o7bobobo2bo\$3o3b5obobobob2obo2b4obo2b4ob2ob2o3b2ob3ob2obob3o5b3obo2bo3bobo3b6obo3bobo2b4o3b3o6bo3bo8bo\$2b6obobo2bo2b2ob2o5b3o5b2o2bo2b2ob2ob8ob2obo3bob2ob4o2bobo3b4ob4o3b2o4b3o4b2ob3obo5b5o\$2o7bo4b3o2bob2obo3bo3bo2b2o6b2ob2ob2o2b2ob2obob3o6b3ob5o2b2o4b5obobo2b2obo3bobobob3o2b3o6b2o\$5obo2bo2bob2ob3o2b3obo3b2o5b2o5bo3bo2b3o2b3obo4bo2b3ob4o2bo2bobo3bobo2bo2b7ob2obobo2b2ob2obo2bobob2o\$3bobob3obo2bo3b6obo2b3ob2o2bo2b2o3bob3ob4o2b2o2bob6o4bobob2ob2o4bo2b3o2b2o2b2o3bo2b2o3bobob5o4b2o\$2b2obo5b3obo2bo4bo2b5ob2obobobo4bob3obo2b2obob2obob6obob2o2b2ob2o2bo2bo3bo2bo5b4o2bobobo3bob6obo3b2o\$2o4b5ob3o3b2o3b2obobobo4b3ob2o7b2o2bo3bobobo2b2ob2o4b2obo2bob4o4bo2bo2bo5bob2o4bo2bob2ob2o2b3o2bo\$2ob3o2b5o2bob3ob3ob2o2b3obobo2b3o2bo5b2ob6obobo2b2o2b2o2b2ob2o2b2obo2bo2bo2b3ob4o5b2o2b3ob5ob2o3bo2b2o\$3bo2b2obob2obo2b2ob3o2b3obob2o2b3o2bo2b2obo3bobob2o6bob6obob3o2b2obo2b2o5bo2b2obobobo2bob3o2b3o2b2o2bob2o\$2b2o2bobob6obobo3b2obobob2o2b2ob3o2b3o2b2o4b3obo2b2ob2o2bobob4obob2o2b6ob3o4bo4bo2bobobo6bo4bo5bo\$3bob3o2bo3bobo4bobobob2o4bobo4b3o2b4ob2obo3bo4bobo2bo3b2o6b3obo3bobo4bo6b3obobob4ob2ob2ob4obo\$3b2o3b4o3bo2bo2bo3b2o2bob3o2bobobobobob5o3b2ob4o2b2obob2obo2bo2bobob2ob2o2bo2b6obob4ob2o3bo2bo3b2o5bobo\$2obo6b3obobo2bobo4bob2o4bob2o3b2obo4b2o7bo2bo3bobobob2o2bobobo2bo2b2ob2o3bo2bob3ob2obobob2obo2b2o3b2ob2obo\$4obo2b3ob3o4b2ob8obobobob2ob6obo3bo2b2obo2b7obo2bo6bo2b2o2b4o2bob2o2bob2ob5ob2obo2bo2b2o2b3obo\$3o2bob3o2b2obo2b2o3b2o2bob2o3bobobobobo2bo5b5o2b3o2bo2b2obo4bo6b2o2b6o4b2ob2o7b4o2b2obob3o2b5o\$4bob4ob4o3b2ob3o2bo7bobobob2obo2b3obob2obo2bo2bob2o2bob2o11b2o2b3o3b3ob3o2bo13b2ob3ob2o2bo\$3bo2bo2bobo3bob3ob2o2bobo3bo2bo3b3obobo3bobobobo3b2obo2b3ob2o3b2o3bob3o2bob2ob2o3bo4bo3b4ob2ob3ob2o4b3o\$3b10o5b2obobob2o2b3obo3bobo2b3obo5b5obobobo4bob3o3bob2obo2bob5obobob2o2b4ob3ob2obo2b5o7b2o\$2bobo5bob4o3bobo7bobob4o3b8o6bob3ob2obob3obob2o4bo2b5ob3o3bob2obob2o3bo7bobo2bo5b2o2bo\$4ob2o4b4o10b3o4bobob2ob2o3bobobo3b2o4b2o2bo4bo2bo3bob2o2bo2b3ob2obob3o2b2o2bob2ob3o2b3obobobobo2bo2bo!`

BTW, the following rule family is what's supporting my motivation
`x = 164, y = 164, rule = B2e3ejkr4ejqrtwz5cn6aikn7e/S01c2in3aejkr4ejkqtyz5ckq6-abobobobobobobobobobobobobobobobob5obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$35b3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobo\$35b2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$37bobobobobobobobobobobobobobobobobobobobobobob5obobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobo\$34b3obobobobobobobobobobobobobobobobobobobobo6b4obobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobob2o4bobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobo11bobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobo4b2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo6b4obobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobob2o6bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob5obobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo6bo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo7bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo7bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobo\$obobob3o5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo7bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$obobobo7bobobobobobobobobobobobobobobobobobobobobobobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo7bobobobobobobobobobobobobobobobobobobobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$obobobo7bobobobobobobobobobobobobobobobobobobobobobobobobobobo3bo3bobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobob3ob3obobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$obobob3o5bobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobob2ob2obobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2ob2obobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2obob2obobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo2bo2bobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5b2o2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$2obobobobob2ob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$2bobobobob5obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$2obobobob4o4bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobob2o2b5obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobob3o2bob4obobobobobobobobobobobobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobob4o3bo2bobobobobobobobobobobobobobobobobob3ob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo4bo2b3obobobobobobobobobobobobobobobob2o5b2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobo7bobobobobobobobobobobobobobobobobob3o5b3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobo11bobobobobobobobobobobobobobobob2o2b5o2b2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobo9bobobobobobobobobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobo9bobobobobobobobobobobobobobobob3o3b2ob2ob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obob3o9bobobobobobobobobobobobobobob3obobo7bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$3bob3o7bobobobobobobobobobobobobobob3obobo7b5obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobobobobob2o4b2o8bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo7bobobobobobobobobobobobobob3ob3o2bob2o3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobobobob3o3bo2bo2b2o2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo7bobobobobobobobobobobobob3o5b4o2b3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobobob3o11b3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobobobobob2o13b4obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobob3obo9bo2b2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobobobob4o2bo7bobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobob5obobobob3obo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobobob3obobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobob3o3bobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobob3o5bobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobob3obo5bobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobob3ob2o4bobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobobobobo5bobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobobo3b3o5bobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobo5b2o6bobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobobo11bobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5bobobobobobobobobo12b2obobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5bobobobobobobobobobo2b2o19bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobo5b2ob2obobobobobobobobobo19bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobo5b2ob2obobobobobobob5o12bo6bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo2b2obobobobobobobobobobo\$obobobobo8b2obobobobobobobobobo19bobobobobobobobobobobobobobobobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobo5b2o2bobobobo3bobob3o19bobobobobobobobobobobobobobobobobobobobob3o2b2obobobobobobobobobobobobobobobobobobob2o4bobobobobobobobobobo\$obobobobo6bo4bobobobobobobobo23bobobobobobobobobobobobobobobobobobobobo3b3obobobobobobobobobobobobobobobob3obob3obobobobobobobobobobo\$bobobobobo9bobobobob3obobo23b3obobobobobobobobobobobobobobobobobobo5b3obobobobobobobobobobobobobob3ob3ob2ob2obobobobobobobobobobo\$obobobobo6b2ob2o2bobobobo28bo2bobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobo9bo2b2obobobobobobobobobobobobo\$bobobobobo7bobobobobobobo26bobo2bobob3ob3obobobobobobobobobobobobo5bobobobobobobobobobobobo13bobobobobobobobobobobobobobo\$obobobobo7bobobobobobobo27b2obo2bobobobob3obobobobobobobobobobobobo5bobobobobobobobobobobo6b2obo7bobobobobobobobobobobobo\$bobobobobo5bobobobobobobobo19b3o4bob2o3bob2o3b4obobobobobobobobobobobo5bobobobobobobob3o11bobo5bobobobobobobobobobobobobobo\$obobobobobo3bobobobobobobobo3bobobobobobobobob2obobobobobo11b2obobobobobobobobobobobobo5bobobobobobobobo13bobo3bobobobobobobobobobobobobobo\$bobobobobo5bobobobobobobobo4b2obobobobobobo2bobobobobobo5bo6bobobobobobobobobobobobo5bobobobobobobob3obo9bobobo3bobobobobobobobobobobobobobo\$obobobobobo3b2ob2obobobobobo2b2o2b2obobobobobobo2bobobobobo3b2o11bobob3obobobobobobobo5bobobobobobobobobobo7bobobo3bobobobobobobobobobobobobobo\$bobobobobo5b2ob2obobobobobo3b2o2bobobobobobo2bobobobobobo3bo2b2obobobo5bob2obobobobobobo5bobobobobobob2ob2obo7bobobobo3bobobobobobobobobobobobobobo\$obobobobobo4b4obobobobobo2b2o3bobobobob3ob2obobobobobobobob3obobobobobobo2bobobobobobobobo5bobobobobob2obob2obo5bobobob2o4bobobobobobobobobobobobobo\$bobobobobo9bobob3obob2ob3ob2obobobobo2bobobobobobobobob3obobobobobobobo2bobobobobobo4bob2obobobobob3o3b3obo3bobobobo5bobobobobobobobobobobobobobo\$4bobobobo11bob3obo2bobo2bobobobobo3b2obobobobobobobobobobobobobobobo2bobobobobobobo2bobo2bobobobob3obobob3obobobobobobo3b3obobobobobobobobobobobobo\$2o3b3ob2o7bobobob2obo2bobobo2bobobobobo4bobobobobobobobobobobobobobobobo2bobobobobobo2bobobo2bobobob3obobo3b3obobobobobobobobo3bobobobobobobobobobobobo\$bo11bobob3o9bobobob2obobob4obobobobobobobobobobobobobobobobobo2bobobobobobobo2bobo2bobobob3obo5b5obobobobobobobo3bobobobobobobobobobobobo\$o5b3obobobobobob2o6bobobobo2bobobo2bobobobobobobobobobobobobobobobobobobo2bobobobobobo2bobobo2bobobobobobo5b3obobobobobobobobo2b2obobobobobobobobobobobo\$3bobobobobobobobobobo5bobobobob3o5bobobobobobobobobobobobobobobobobobobo16b2obo2bobobobo3b4obo2bobobobobobobobobo5bobobobob3obobobobobo\$obobobobobobobobobobo7b3obobob3obobobobobobobobobobobobobobobobobobobobobo7bobobob3obobo2bobobob5obo2bo2bobobobobobo11bobobo2b4obobobobobo\$bobobobobobobobobobo3b2o4bobobobobobobobobobobobobobobobobobobobobobobobobobo2b2obobobobobobobobo2bobobobobobobobo5bobobobobobo9bobo4bob4obobobobo\$obobobobobobobobobo13bobobobobobobobobobobobobobobobobobobobobob3o5bobobobobobobobobob2obobobobob3obob3ob3obobobobobo16bobo2bobobobobo\$bobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobo7bobobobobobobobobo2bobobobobobobobobobobobobobobobobo5bobo6b2ob3obobobobo\$obobobobobobobobob3o3bobob3obobobobobobobobobobobobobobobobobobobobobob3o5bobobobobobobobobo2bobobobobob3obobob5obobobobob3obob3obobobob2o2bobobobobobo\$bobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobo2bobobobobobobobobobobobobobobobobobobobobobobob5obobobobobobo\$obobobobobobobobobob3obobobobobobobobo3bobobobobobobobobobobobobobobobobobo5bobobobobobobobob2obobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobobob5obobobobobobobobobobobobobobobobo5bobobobobobobobobo2bobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobo4bo2bobobobobobobobobobobobobobobobobo5bobobobobobobobo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobobob2ob4obobobobobobobobobobobobobobobobo6b2obobobobobobobo2bobobobobobob2o2bobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobob2o2b2o2bobobobobobobobobobobobobobobobobobo5bobobobobobobobo2bobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobobobobob3obobobobobobobobobobobobobobobobobobobo7bobobobobobobobo4bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo7bobobobobobobobobo4bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$obobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobo4b4obobobobobobobob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobob3o3bobobobobobobobobobo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$2bobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobob3ob3obobobobobobobobo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo\$bobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobob5obobobobobobobobobo2bobob3obobobobobobobobobobobobobobobobobobobobobobobobobobobo\$5bo2bobobobobobobobobob2o4bobobobobobobobobobobobobobobobobobobobobobobob2ob2obobobobobobobobo2bob3obobobobobobobobobobobobobobobobo3bobobobobobobobobobobobo\$3b2o2bobobobobobobobobobobo2bo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo2b2o4bobobobobobobobobobobobobobobobo5bobobobobobobobobobo\$6bobobobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo2bobo3bobobobobobobobobobobobobobobobo5bobobobobobobobobobobo\$o6bobobobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob3o7bo2bobobobobobobobobobobobobobobo5bobobobobobobobobobo\$bobo2bobobobobobobobobobob4o2bobobobobobobobobobobobobobobobobobobobobobobobob3obobobobobobobob2o4b3o4bobobobobobobobobobobobobobo5bobobobobobobobobobobo\$obobo2bobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobob2o4bobo4bobobobobobobobobobobobobobo5bobobobobobobobobobo\$b4obobobobobobobobob3obobob3obobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobob7o5b2obobobobobobobobobobobobo5bobobobobobobobobobobo\$obo4bobobobobobobobo3bo3b3obobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobo3bobo4bob3obobobobobobobobobobobo5bobobobobobobobobobo\$bo6b3obobobob4o10bobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobob3obo4bobobob3obobobobobobobo5bobobobobobobobobobobo\$2o5bo5bobobo2bob3o4bobobobobobobobobobob5obobobobobobobobobobobobobo5bobobobobobobobobobobob3obobobobobo2bobobobobobobobobo5bobobobobobobobobobo\$obo11bobob2obob3o4bobobobobobobobobobo3b3obobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobo4bobobobobobobobo5bobobobobobobobobobobo\$o3bo8bobobob2o3bobo4bobobobobobobobobo4b4obobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobo4bobobobobobobobo5bobobobobobobobobobo\$bo2bo4bo4bobobob3obo7bobobobobobobobobo7bobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobo2bobobobobobobo5bobobobobobobobobobobo\$o3bo8bobobobob3o7bobobobobobobobobobo2b4obobobobobobobobobobobobobo3bobobobobobo3bobobobobobobobobobobobo3b2obobobobobobo5bobobobobobobobobobo\$bo12bobobobob3o7bobobobobobobobobobob3obobobobobobobobobobobobobo5bobobobobob3obobobobobobobobobobobob3o4bobob3obo5bobobobobobobobobobobo\$o12bobobobobob3o7bobobobobobobobobob3obobobobobobobobobobobobobo2bo2bobobobobo2bo2bobobobobobobobobobobobo3bo10bobo5bobobobobobobobobobo\$2bobobobo5bobobobobob3o7bobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobo6b3obo5bobobobobobobobobobobo\$o3bo10bobobobobob3o7bobobobobobobobobobobobobobobobobobobobobobobo7bobobobob3obobobobobobobobobobobobobobo4bob3obobo5bobobobobobobobobobo\$obobobo9bobobobobob3o5bobobobobobobobobobobobobobobobobobobobobobo2b2obo3bobobobobob5obobobobobobobobobobobobobo4bobobobo5bobobobobobobobobobobo\$2o4b2obo7bobobobobob3o5bobobobobobobobobobobobobobobobobobobobobobobo2bo4bobobobobobobobobobobobobobobobobobobobobo2bobobobobo3bobobobobobobobobobobo\$b3ob2obo7bobobobobobob3o3bobobobobobobobobobobobobobobobobobobobobobobo4bo2bobobobobobobobobobobobobobobobobobobobobo2bobobobobo5bobobobobobobobobobobo\$obo2bobobo7bobobobobobob2o2b3obobobobobobobobobobobobobobobobobobobobobobo2b2o2b2obobobobobobobobobobobobobobobobobobobobo2bobobobobo3bobobobobobobobobobobo\$b2obobobo9bobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobobobob2obob2obobobobobobobobobobobobobobobobobobobo2b3obobobobo2bo2bobobobobobobobobobobo\$ob2obobobo9bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2ob2obobobobobobobobobobobobobobobobobobob3o4bobobo3b2o2bobobobobobobobobobobo\$b4obob3o9bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobo2bo3bo2bob3ob2obobobobobobobobobobobo\$o4bobob3o7bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo2b2o3b3obobob2obobobobobobobobobobo\$b4obobob3o7bobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo9bobobobob2o3bobobobobobobobobo\$ob2obobobob3o7b3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2obo2b3obobobobobobo10bobobobo\$b2obobobobob3o8bo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobo2bo8b2o2b2o\$obob2obobobob3o5b2o2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob4ob2o3bobobobobobobo5bobob5obo\$bobo2bobobobob3obob3o3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobob2o6bobobobobo\$obobo2bobobobob4obo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobob2ob6obobobobobobobo4bo2bobobobobo\$bobo2bobobobobob5ob5obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobob4o2bobobobobobobob4o2bobobobobobo\$obobo2bobobobobobo3bobobobobobobobobobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobo5bobobobobo3bobo2b2o2bo2bobobobobo\$bobo2bobobobobobobobobobobobobobobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobo3bobobobobob5obobo4b2obobobobo\$obobo2bobobobobobobobobobobobobobobobobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobob3ob3obobobobo4b3o4b2o2bo3bobobo\$bobo2bob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2o3b2obobobobo3bo3bobo2b2o5bo4bob4ob3obobo\$obobo4bo2b2ob5obobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2ob2obobobobob2o2b3ob3ob2ob2o8bo4bo3bobo\$bobo5bobo2bo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob3ob3obobobobobo3bobo2bobobobo5bo3bo2bo3bobo2bo\$obobo3bobobo6bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2ob2obobobobobo5bob4obo3bo7bobo9bo\$bobo4b2obob2o3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobob4o24b2o\$obobob3obobo2bo3bob3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobob3o!`
Last edited by shouldsee on November 1st, 2017, 2:52 pm, edited 2 times in total.
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

shouldsee wrote:
`???2dntca_20ec1dc3fce292c535ca344008`

When sending this code to Golly, it returns an error:
`rnum=lst[lstlen.index(26)];ValueError:26 is not in list`
Still drifting.
Bullet51

Posts: 531
Joined: July 21st, 2014, 4:35 am

### Re: Use Smoothiness to classify rules

[UPDATE,Mar/26/18]: Fixed the same bug again (because of poor version control) in handing minus sign and moved scripts to another thread including "mutate.py" and "KBs.py".
[UPDATE,Nov/05/17]: Bug fix in "KBs.py" to handle the minus sign in B/S alias correctly in "kb_2dntca.alias2rulestr()".

Bullet51 wrote:
shouldsee wrote:
`???2dntca_20ec1dc3fce292c535ca344008`

When sending this code to Golly, it returns an error:
`rnum=lst[lstlen.index(26)];ValueError:26 is not in list`

Hi there,

Please find the updated version of set_NTCA_canonlised.py , which depends on another module called KBs.py. Note you need to have both file in the same directory for them to work.

Also note these scripts are written with Python2.

Best wishes

set_NTCA_canonlised.py
`## This script generate an ECA rule and emulate it on a torus of width 200. ## Written by Feng (shouldsee.gem@gmail.com) Feb 2017.import gollyimport KBsrulestr=golly.getstring('NTCA number',golly.getclipstr()).split('_')[-1];alias = KBs.kb_2dntca().rulestr2alias(rulestr)golly.note(alias)curr=golly.getrule().split(':');if len(curr)>1:   curr=':'+curr[1];else:   curr='';golly.setalgo("QuickLife")golly.setrule(alias+curr);golly.setclipstr('\n'+alias);`
Last edited by shouldsee on March 25th, 2018, 11:11 pm, edited 2 times in total.
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

Why is the rule
2dntca_3d9f26dab2a8f99dd11f33ebee
better than
2dntca_0658d07674334de73d60c290d0 ?
Still drifting.
Bullet51

Posts: 531
Joined: July 21st, 2014, 4:35 am

### Re: Use Smoothiness to classify rules

Bullet51 wrote:Why is the rule
2dntca_3d9f26dab2a8f99dd11f33ebee
better than
2dntca_0658d07674334de73d60c290d0 ?

Sorry I forgot to mention there was error in the list. Will be updating soon.
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

UPDATE: the algorithm seems to prefer failed replicators (and, actual replicators as well), but failing to detect small gliders/spaceships.

some examples
`2dntca_3952c933f954dbc66faeae72c42dntca_3a83b99fb90e9438ac3ffd72262dntca_3c3bb42647288107132a5a62502dntca_058eeb55a8726c2a221e0e12d02dntca_21e8dd029b21c1623558aed4a02dntca_3a5186ee32ee8d7ee9770348a02dntca_3986fd07efbea74ba7aaa47956`
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

The rule 2dntca_3a83b99fb90e9438ac3ffd7226 leads me to find a gun:
`x = 6, y = 9, rule = B2ci3aejk4ceknqwz5eikry6ain7e/S2-kn3aejkn4aeijq5ajkqy6-i82o2b2o\$bo2bo\$2o2b2o4\$2o2b2o\$bo2bo\$2o2b2o!`
Still drifting.
Bullet51

Posts: 531
Joined: July 21st, 2014, 4:35 am

### Re: Use Smoothiness to classify rules

Hi mates,

To define the gliderness algorithmically still seems to be a very difficult task. Thus I would really appreciate, if you can define gliderness for the following 96 rules. Hopefully this set of knowledge would then confine the definition of gliderness. In other words, this test set should be confining future algos. You would probably find it easier to randomise the rule before scoring. Nevertheless, I am always open to suggestion as to potential parameter that defines our perception of the dynamics.

A bit of background: these rules emerge as a set of candidates from my search, in a region where traditional glider rules seems to cluster around.

Here is my score of these rules, by no means I claim this is an accurate account, since my judgement would be subjective from time to time,

(in 2dntca string)
Rule \t Score
`2dntca_2b97c9d724ffa80eefa1ecae30   3.02dntca_3896fea6bc5f891fc30803e05e   3.02dntca_3b924cafe4291b3fcf35708feb   3.02dntca_242167695d09b4fc259cd6a860   3.02dntca_3d2967c87dbfbff824448744e0   3.02dntca_3eafb8fdaf77a27b5b54b47df9   3.02dntca_3493d3a63af678d34e7a220088   3.02dntca_13aec1eb9c76eac25f204ad4a0   3.02dntca_390efb4faa7ce5f913a6adcaeb   3.02dntca_21e8dd029b21c1623558aed4a0   2.02dntca_264e6307bebed980216648ac90   2.02dntca_38793be1a2d9024ce0c15460d0   2.02dntca_388abe837b386c35d58d87b937   2.02dntca_2d15fee5659cac44bfcb0e80e0   2.02dntca_01516365390add383cc00a2808   2.02dntca_2bc3e06a87ade87cc309be0d58   2.02dntca_3d4fe723e2a7fb3674a8295ff2   2.02dntca_0f9dad4f307426765a00c00208   2.02dntca_0a320cd8ce350e730e768c89a0   2.02dntca_1049131c2420d659f36661e30f   2.02dntca_2e92fadff562f46c925963d9c7   2.02dntca_3906ff47b4dee1a0353b5331b5   2.02dntca_29cb3c479ebdce097fc8f72ee0   1.02dntca_2c8b477dfa0bb33b062c8121b0   1.02dntca_2f93ff55a86778a65ebd074c77   1.02dntca_3f93fb6e2c21de0d8789db35c9   1.02dntca_2baf21b7246e6e22a8cba510b0   1.02dntca_2c57f16ae45152a67fd495e7b8   1.02dntca_2f3af96fde5e1c29694f46f6b4   1.02dntca_3b03c3e7cb5e265af308b74892   1.02dntca_2e5bdb27d3fe4269e297363742   1.02dntca_28d27beeeebfef421580935a30   1.02dntca_39d3b9d76634f81cd6016b675e   1.02dntca_3c3bb42647288107132a5a6250   1.02dntca_0e72bbf477132481c1723c5250   1.02dntca_2a068337ed9c09ce460088575e   1.02dntca_1324d45b812a937834b01d1808   1.02dntca_2806e15bdffbf0a95b698bf9fc   1.02dntca_11e3e2e0af03812f80f03f38e0   1.02dntca_2cc2fe1fdeec4801574787cefd   1.02dntca_28d3c36f1d12e42671b6e13f9f   1.02dntca_3c23b13bf9fb96ff1ae8cbe2d2   1.02dntca_2dcea6c6bcbd9829a01c8c8fd8   1.02dntca_3adbfbd36ec85f00c233272213   1.02dntca_15bc74eb6774cd082539a894e0   1.02dntca_2e13fc2f978a9171afdd33ccfa   1.02dntca_3b9fbe5ac7272d98d1022f6eb1   0.52dntca_0957c49391b36cc9aa78a330a1   0.52dntca_170a9c08a59c02860fc9ceec80   0.52dntca_362d18c1d42f205648b24e1450   0.52dntca_29eec183b615a8f48f39643825   0.52dntca_072008cdb1af0174dab928e6df   0.52dntca_066293c0586221033d3054c050   0.52dntca_0dffdfcab879e503a52ff9e333   0.52dntca_25d6d10138058e0e33940931d0   0.52dntca_2e7368c3fe199f2c0854fec744   0.52dntca_1db100a7be0a7dbe4a794e42a0   0.52dntca_11d3c39d0d802bad3c1c3940b0   0.52dntca_1d703ee8646522130c950823d0   0.52dntca_0cc3c1e3f6f33049efe0b653d0   0.52dntca_28b6aa5fef86f837f4d4811516   0.52dntca_2b5fcd1af9b3613be8f0f8387d   0.52dntca_2e1bb31fe279a688b027bb87fe   0.52dntca_058eeb55a8726c2a221e0e12d0   0.52dntca_2a4793eb8ba4477bc36dfaedb9   0.52dntca_03ac552d5070ee825d0e2dbfcf   0.52dntca_38f2fe7a79678e510f43032350   0.52dntca_2b60af1079b102bb120190a9d0   0.52dntca_2b4728dbefccfd08dfb33a6ba1   0.52dntca_3e12e906ffa61e9f54acf920fd   0.52dntca_3967fdcf97eb6617ca3b757e78   0.52dntca_3986fd07efbea74ba7aaa47956   0.52dntca_121883095666dc1756a9714a60   0.52dntca_3df8142239c871a91f49232630   0.52dntca_3efef0cee31da32d110ffb83c1   0.02dntca_3a13fa4bdcb067e0453703cba3   0.02dntca_00150b5b57438568ac508d3208   0.02dntca_28ef8192efb45aa3a2de8b1c3b   0.02dntca_0bbc98434332f578b24f926460   0.02dntca_1d63a5bc6de9b8043e34964610   0.02dntca_1b17a9bf602797812c74f4476e   0.02dntca_2a25a10ac0264145e2f072ea10   0.02dntca_3eefcd0a9cd540dd3e5addf469   0.02dntca_05abba46232d06032c669230f0   0.02dntca_1c36ee2e6aa3d586c2ad277060   0.02dntca_14b839b7aef4e1a89080936410   0.02dntca_28cbd6aa7e2bea7c4f9567495a   0.02dntca_390ef9539a3d5dfb9c5bdef8ad   0.02dntca_254a3200ea76a88b3638883610   0.02dntca_043182003b6e4ace7d7b11fbaf   0.02dntca_09ea2b8165072dbcc490a80eba   ?2dntca_2fe6926aff1cac0c2de20a0888   ?2dntca_231a7f33c11776a2b837489279   ?2dntca_1b1cec2d830fec37ac1210a99f   ?22dntca_3afc4fa39572352dd85021495f   ?22dntca_0c193eedf216ee830b7f7bc93f   ?1`

Example b3aijkq2n5aceijr4cjtyz7e6aci8s1e03aeijky2a5acijkqry4ceijrtw7c6aek 3.0
And in B/S format
`b3cijnq2ci5aijnqry4acejnyz7e6aeiks1c3acejknry2aen5cijknqy4aeikr7ce6aekn8   3.0b1ce3qy2ace5aknqr4cejnrwyz7c6acekn8s1ce3ceikq2acn5cjknr4jrt7ce6acek8   3.0b1c03aeijknqy2aeik5aciknq4aeinqwy7e6ceik8s3cejnqy2akn5cijknqr4inrz7ce6ae8   3.0b3cei2e5cjknq4aijkqr7c6cs1c3ceijqr2aekn5ajkqy4aceijntwyz6cin8   3.0b3aceijky2e5cejknqr4jkqyz7c6ai8s1e3ciqy2cei5acjkny4aceijkntwyz7e6cin8   3.0b03aeijkq2acekn5acejnry4aceijwz7ce6ackn8s1ce03ceknqy2eik5cijnqr4acenqrtwy7ce6eikn8   3.0b3aqr2a5aijr4eiqrtwyz6acen8s3iknqy2i5acikny4ijkqrtw7c6aceikn8   3.0b3aijkq2n5aceijr4cjtyz7e6aci8s1e03aeijky2a5acijkqry4ceijrtw7c6aek   3.0b1c03aeinry2aen5ceijqr4acejktw7c6aikn8s1e3aceknqry2ace5aknqry4aenqrtw7ce6ack8   3.0b3jq2aceik5cjnqr4ajnrty7ce6cis3aceinqy2ekn5ejkr4aeknqrwy7ce6aekn8   2.0b1ce03a2eikn5cjy4aeijknqrtz7ce6ekns1e03cijkny2acin5cjknqr4ejnrwyz7ce6aceik8   2.0b1ce03ceknqr2akn5ceiy4ejknqtw6n8s1ce3cejnqy2aci5ejny4rw6cn   2.0b3aeikr2k5aciknry4aikwy7e6aeks3aqy2aei5cijr4aceinqrtwz7ce   2.0b3knq2an5acejkr4cek7ce6aeiks3jkqy2n5inqy4aejnrw7e6aeikn   2.0b1c3acijknqy2cekn5aeijknr4acjqrtyz7c6ci8s1e03anqry2cn5eknqry4iknqz7ce6acikn8   2.0b1e03aciry2cikn5ijkqr4ceijrtz7c6aikn8s1c03eijk2ck5ajknqry4eijkn7ce6ack8   2.0b3cy2an5q4aejkqtyz7c6ceis1c3aciqr2i5eiknqy4eijnty6cn   2.0b1ce03eiq2cikn5ejkq4aknrtwy7c6akn8s1c03eiqry2acen5cnq4aijnqtyz7ce6acek8   2.0b3ackq2cei5enq4n7c6acekn8s1ce3cjkr2eikn5cenqry4cekqw7e6cn8   2.0b3acejry2c5eiqr4acejqtyz7ce6as1c3aejy2ai5aejknqry4jkqt7c6aci8   2.0b3acijy2n5aekn4ijrt6ikns1e03aeiny2aei5ekry4acijnqtwy6aek8   2.0b3acir2ein5jkqr4cejknry7c6aceikns3aeir2aein5cijknq4eikrwyz7e6cikn8   2.0b1ce3jnq2aceikn5jry4ejnqty7c6aeikn8s1ce3acijnqy2cn5cejnqy4eiqrz7ce6aekn8   1.0b1c3akn2cen5acinqy4jkqrwz7c6acn8s1ce3acijkqry2acin5ainqry4acjknrtwyz7ce6aikn8   1.0b1ce03acejnqr2ackn5acij4aeijktz6aces1c03ejnr2cn5ejkqy4aejnty7ce6acekn8   1.0b1e03aeijnqr2acein5ckqry4aetwy7c6kns1e3eiky2acei5ejkqr4aijkqrtz7ce6aceik8   1.0b3aiy2e5ain4aijnwz7c6ci8s1c03acinr2ceikn5cejknr4cenqty7c6cekn   1.0b1e3aiq2aceikn5cijnqy4acjqrtwz7c6as1ce03aceiky2aci5aijkqry4aejknqrtyz7ce6ak8   1.0b3cky2an5cikqy4acijqz7e6in8s03acqry2cek5kqr4ceinwy6ak   1.0b1ce3jnqy2acek5aqry4cey7e6acs1e03ac2n5ajnqry4aikrtwyz7ce6ack8   1.0b3nqr2ce5ijny4eiknwz7ce6acekns1e03aen2eik5acejny4cejqyz7ce6cik   1.0b3nry2cen5aeikq4ejrw7c6cen8s1ce3aeijy2kn5j4cqryz7ce6aikn8   1.0b1c3ackq2cn5ajqr4aeknrz7e6aci8s1e3ceiknq2cek5ckqry4aeqrtwyz7ce6ackn8   1.0b3ikny2cn5acjnqr4aejktyz7c6acekns1e03eiry2ck5cejknry4aeikqtwz7ce6ace8   1.0b1c3cejknqr2eik5eqr4eintwz7e6acekns1c03ciknry2ek5ekqry4jknqrwyz7ce6acikn8   1.0b1e3aceijnqr2ci5ceqr4ekqrwyz7ce6aceikns1ce03ceijk2aei5ijkqry4cejnqtz7ce6aik8   1.0b3aceijknq2ackn5acn4ciqt7c6acens1ce3ekr2aceikn5aeijknry4aeinrz7ce6aikn8   1.0b3acikr2ci5aejqry4ceknrtyz7ce6cis03knry2cei5cijnqy4acn7ce6aen8   1.0b03ajk2aeik5cn4ejknqrtwy7ce6ceikn8s1c03aceijry2ckn5jkny4aeirt7ce6aceikn8   1.0b1ce03eijq2cein5aijknry4aeiqrtyz7ce6eikns1e3ikry2cen5aiknqry4einrt7ce6ceikn8   1.0b3aeiky2ck5aceijknqy4ejqrwz6cs1c3cq2c5knqry4aeijnqrtz7ce6cein8   1.0b3acijknq2en5eknqr4aejkrtwy7c6aikns1c3ceijnry2ceik5eijqr4aeijkqrt7ce6aen8   1.0b1c03knqry2ci5eiqy4iknqty7ce6ekn8s1c3ikn2ce5cejknqy4ekqrtz7ce6acekn8   1.0b3acejn2acek5eknqr4aceijnqrwy7c6ais3acy2ae5cejnr4aejknt7ce6aceik8   1.0b3acijy2ei5ceikr4cijkrty7c6acein8s03acekny2a5cjknq4aceiqyz6aei   1.0b1c3aceijy2acei5ckq4aeijnqrwz7ce6cekns1e3einqr2acik5ijkqr4ijknqrwy7ce6aikn8   1.0b3knr2ceik5cknry4jkwyz7c6cekn8s1c3eikqy2ci5eikn4ceijrtwyz7ce6acek8   0.5b3acnq2cek5ijn4nqwz6acs1e03ceiknry2eik5ceijknqry4aeijkqrwz7ce6aeikn   0.5b3ijny2cin5ejkq4qrtw6cein8s1c3ceikn2ci5aein4cijknrty7e6aei8   0.5b3inq2ein5aceir4ajkqrtwyz7e6e8s1e3jknqry2ckn5jqy4ijqrz6ck   0.5b1ce3ckry2cek5aijkqr4acejknrwz7c6aikn8s1ce03cenry2e5jknqry4aikqrtwyz7ce6aek8   0.5b3ijknqr2acei5acijknq4aceiknrtwz7c6ikn8s1ce03jknqy2cekn5ceijkqry4cejkqry7ce6akn8   0.5b1e03aeikq2acen5air4ekqrwyz7ce6ek8s1c3acjnqry2ckn5ajknry4aijkqtyz7ce6aik8   0.5b03ainqry2ikn5cijqry4acijknqty7ce6iks1ce3aceiknr2k5ceijnqr4eikqrtyz7ce6an8   0.5b3ak2ceikn5akny4aw7ce6aiks1c3cqy2ak5aeny4acjknrtyz7e6ck8   0.5b1ce03aejknqr2aekn5acejk4acejkrty7e6acins1c03aekny2ace5aikqy4cijz6e   0.5b03aeijkqy2acik5acir4acknrtw7e6cns1ce3aceijnqy2aik5ceqry4aeknqrtwy7ce6ackn8   0.5b3acenr2ce5aejy4ceikrtyz7c6aiks03aciky2e5knqry4enrt7c6ceik   0.5b1e03ciqy2ace5aceijkny4acintwz7e6aeiks1c03acjnqry2ik5eiknry4ajkntyz7ce6akn8   0.5b1ce3cejq2ckn5acjry4ceijnqtwyz7c6eks03qr2cin5jnqr4aceiknqtyz7ce6acek8   0.5b1ce3aceijknr2aceikn5ceijnqy4ejkn7ce6aens3acikny2ack5anqry4aqz7ce6acikn8   0.5b3aekn2ceik5acjknr4iw7c6ceikn8s1c3akqry5ceijn4ceiz7e6ci   0.5b1ce03ajnqy2acein5cinqr4einrz7e6iks1ce3anqry2an5cinqr4cejknrwy6i   0.5b03aijnqry2cn5cejknry4acknyz7ce6eikn8s1ce3aceinqy2ce5ajr4eqyz7ce6acekn8   0.5b03aci5ijkny4ciknrtwyz6aeis1c03ciny2ci5aceikqr4ajkrwy7ce6akn   0.5b3ajk2i5acekqr4ar7e6aikn8s1ce3aeijr2aein5aijnr4aikry7c6ik   0.5b3aceiky2cn5cjy4eirwy6ei8s1e3acn2ckn5aceijkqy4iknty7c6cekn   0.5b1e03i2i5eijnr4acijnry6ais1c03ejnq2en5aceijknqry4cijnqrw7ce6aek8   0.5b3jqr2ce5aeijnqr4ciz7e6kn8s03aijqry2en5cijqr4cejwz6in8   0.5b3cy2cen5aij4iwz7e6ns1e3ejky2aek5ceiy4ceijtz7c6cik   0.5b1c03ceinry2cik5aceijknq4cjknrtw6aeikns1ce3aejkny2ack5ceknry4aceijt7ce6aceikn   0.5b3acek2cekn5anr4cijky6eins1c03acer2cn5eknqy4jrt7c6eik8   0.5b1e3ejkny2ek5nq4ijkqy7ce6aeks1e3acijn2aeikn5ceijknqr4acejnqtz7ce6ain8   0.5b3ainqy2i5aijq4eikqrtyz6cei8s1e3acijq2ein5acijnqr4cjnqrt7e6aein   0.5b3cnqy2c5cir4acintwz7ces1ce3ijnry2aikn5ry4crwz7e6akn8   0.0b1e03airy2ain5aenqry4aciknqrtwy7c6aikn8s1ce03acijqy2aeik5aikqry4aeijnqtw7ce6ak8   0.0b1c3ekq2aceik5cejknq4aijtyz6cns1e3ceijnqry2cen5ceijkn4ijnqrtwz7ce6acekn8   0.0b3jy2cn5ejry4ejnt7c6acekn8s1ce3cikry2ck5acjnqry4acknqt6aei   0.0b3eiqy2ei5acikn4cejknqrtz7c6cek8s1ce03inry2cen5akn4ckqrtz7ce6acik   0.0b3aceikr2ce5aeinqr4ekw7c6ikns1c03iy2ik5in4aceiqy7c6aceikn   0.0b03cijr2aen5ceknr4cirtw7e6ak8s1ce03acjkq2aceikn5aeijkry4acijkrtw7ce6aeikn8   0.0b3cjn2cn5aeijr4ijrwyz7c6ains1c03acky5aenr4aiqrtz7c6ci8   0.0b1ce3ceijkny2aek5cinry4ceijkqwz7ce6ceik8s1e3jny2eik5acinqy4aiz7ce6akn   0.0b3cejn2cn5cijknqy4eijqy7c6ci8s1e3iky2ekn5ceijny4acikrtyz7ce6ikn   0.0b3ceijry2ein5ej4cjknqrtz7e6aeikns1ce3ciqy2ik5q4acenqrwyz7e6aek   0.0b1c03ceijkr2ac5aery4acinqrtwy6as03airy2ci5acejnry4acknqrtyz7ce6aekn8   0.0b3cny2a5cny4cijknz6eks1c03ack2cei5ijqy4aeijnqwyz6acn   0.0b1c03aeiknqry2ik5cij4aikt7ce6aekn8s1e3eiy2ac5ajkqr4eijkntwz7ce6ackn8   0.0b03aeknry2eikn5cejnqr4cejrw7ce6aen8s3aceijn2ackn5ceknr4acenqyz7ce6aeik8   0.0b1ce03aciknqr2aikn5aiqr4airtyz6es1ce03ceky2acikn5ain4cijqtwy6cikn   0.0b1c3aijnqy2ac5ejnr4aiknyz7c6iks3acnqr2n5acejnqy4acinyz7ce6ce   ?b3acr2a5cijqr4acjky7e6acins3aceir2in5eijnr4ceijqtyz7ce6aceik8   ?b03ceiknr2acein5aeijknry4iknqtz7ce6aceikns03aj2a5aikqry4nyz7c6ac8   ?b1ce03acr2ack5acejknqr4aceijkntwyz7ce6ceik8s1c3q2akn5ikqr4inqy7e6k   ?2b1ce03qy2acekn5ejk4aciknqwz7e6acek8s1e3ckny2cin5ceijkqry4cjny7e6ace8   ?2b1ce03eikr2acik5aceijkr4aeijkrtwyz7c6acekns1e3aeijn2acik5acinqr4ejqrz7e6cin   ?1`

PS: Scoring those 96 rules would take around 1 hour.
PPS: I will try to update some details on the algorithm once I find some time after the incoming deadlines.

Kindest regards
Feng Geng
Attachments
The region that contains the 96 rules
016_0010.png (86.29 KiB) Viewed 3657 times
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

Hi guys,

I am gonna give up characterising rulestrings by dynamics from random soups, given the biohazard example and my recent unfrutiful attempt. It seems make more sense to characterise the combination of (starting pattern + rulestring) rather than the rulestring itself. Although the notion of smoothness might still be applicable, I could not seem to write down a reliable formula to describe the local fluctuation. (aka a scalar function F(pattern,rulestring, timespan, spatiotemporal_index) that returns a scalar describing chaos/random/complex). So I will pause the smoothness unless some brilliant ideas are proposed. Retrospectively, the idea of fluctuation simply does not fit CA since CA lives in a world far from equilibrium.

Instead, I will be working on deterministic programming. The approach will be based on the attractor notion proposed by DDLab, in a mixture with the particle approach proposed by this preprint (written by a Mathematica user LoL). The idea is to start from a pattern A and deduce all possible parents of A (which shrink to A over time) and study their statistical properties, hoping to define glider/replicator even in background with non-trivial parity. But for preliminary analysis I will start from ECA.

Anyway, hope to update you guys soon.

Kind regards
Feng
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

shouldsee wrote:Although the notion of smoothness might still be applicable, I could not seem to write down a reliable formula to describe the local fluctuation. (aka a scalar function F(pattern,rulestring, timespan, spatiotemporal_index) that returns a scalar describing chaos/random/complex).

New thoughts:
The whole thing may be impossible in principle.
Consider a universal Turing machine living in some rule.
Then, the scalar describing chaos/random/complex should be 0 if the Turing machine halts, and non-0 otherwise.
But it is undecidable whether the Turing machine halts. Thus, the descriptor is not reliable in principle.
The same argument also works for random soups.
So the key is to find some limited but useful descriptor of chaos/randomness/complexity, for example a descriptor of a finite orbit of some pattern in some rule.
Still drifting.
Bullet51

Posts: 531
Joined: July 21st, 2014, 4:35 am

### Re: Use Smoothiness to classify rules

Bullet51 wrote:New thoughts:
The whole thing may be impossible in principle.
Consider a universal Turing machine living in some rule.
Then, the scalar describing chaos/random/complex should be 0 if the Turing machine halts, and non-0 otherwise.
But it is undecidable whether the Turing machine halts. Thus, the descriptor is not reliable in principle.
The same argument also works for random soups.
So the key is to find some limited but useful descriptor of chaos/randomness/complexity, for example a descriptor of a finite orbit of some pattern in some rule.

You made an interesting point about the scalar. Unfortunately I am not into computability so cannot comment on the quality of the claim. The existence of finite orbits is certainly much more tractable and I recently wrote a python script using brute-force to identify such things, starting with periodic tiling, but it's quite alpha at this moment. It might be possible to approximate the constraint on such tiling using probability theory, but I am sure any appx. will break down quite easily from my experience with mean field.....

Having said that, I briefly reverted to random analyses due to the incomprehensibility of reversible 2nd order rules (Center_(t=1) = xor( F(Moore_(t=0), Center_(t=-1) ) ). Interestingly, they seems to cluster at the "chaos" region without an exception (so far). So another potential direction is to contrast 1st-order CA with the 2nd-order CA to find some clues for its complexity.

The following script outputs a ".rule" transition table starting from any moore isotropic CA. It imports this utility(KBs.py, sorry about the painful dependencies but any refactor will be welcomed.)

rev_init.py
`## Written by Feng (shouldsee.gem@gmail.com) March 2018.import gollyimport KBsimport random,re,osprefix,curr,suffix = KBs.interpret(golly.getrule().split(':'))prefix = 'rev_'kb = KBs.kb_2dntca()rulestr = kb.alias2rulestr(curr)alias = kb.rulestr2alias(rulestr)if 1:   DIR=golly.getdir('rules')   fname = os.path.join(DIR,prefix+alias+'.rule')      with open(fname,'w') as f:      print >>f,kb.rulestr2table(rulestr,reverse=1)newrule ='%s%s:%s'%(prefix,alias,suffix)golly.note(newrule)golly.setclipstr(newrule.split(':')[0])golly.setrule(newrule)`

And by definition those rules are inverses of themselves, and inverse trajectory can be easily calculated by replacing

00 01 10 11

with their reverses

00 10 01 11

in decimal it means (0->0, 1->2, 2->1, 3->3)

this script will do it for you

rev_time.py
`import randomimport golly as g#import replacerdef replace(rectcoords,map):   for i in range(rectcoords[0],rectcoords[0]+rectcoords[2]):      for j in range(rectcoords[1],rectcoords[1]+rectcoords[3]):             g.setcell(i, j, map[g.getcell(i,j)])   def replace_sel(IN,):   od=IN.split('/')   od = [int(x) for x in od]   sel=(g.getselrect()!=[])   if g.empty():      g.show('universe is empty')   else:      if sel:         replace(g.getselrect(),od)      else:         replace(g.getrect(),od)# if __name__=='__builtin__':#    default='0/1'#    IN=g.getstring('map?',default)#    replace_sel(IN)replace_sel('0/2/1/3')`
Attachments
CA-2nd-order.png (40.32 KiB) Viewed 2480 times
shouldsee

Posts: 406
Joined: April 8th, 2016, 8:29 am

### Re: Use Smoothiness to classify rules

shouldsee wrote: Interestingly, they seems to cluster at the "chaos" region without an exception (so far)

The rule B3/S5 is somewhat less chaotic with a finite seed.
The rule B0/S8 features spontaneous string generation/annihilation with a finite seed, and the seed itself turned out to be unbreakable.
B0/S8 processed by a filter.
1.png (103.75 KiB) Viewed 2459 times

Most other rules are chaotic, especially B1 and B2 ones. Nothing in B4 rules could escape their initial bounding box.
Still drifting.
Bullet51

Posts: 531
Joined: July 21st, 2014, 4:35 am

### Re: Use Smoothiness to classify rules

Bullet51 wrote:Nothing in B4 rules could escape their initial bounding box.

Yeah, it's a simple consequence of geometry that in any rule without B3 or lower, nothing can do so.

77topaz

Posts: 1345
Joined: January 12th, 2018, 9:19 pm

PreviousNext