Use Smoothiness to classify rules

For discussion of other cellular automata.
Sphenocorona
Posts: 480
Joined: April 9th, 2013, 11:03 pm

Re: Use Smoothiness to classify rules

Post by Sphenocorona » March 9th, 2017, 2:52 pm

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.

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

Re: Use Smoothiness to classify rules

Post by shouldsee » March 9th, 2017, 5:09 pm

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

Post by shouldsee » March 11th, 2017, 7:34 am

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

Image

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

Re: Use Smoothiness to classify rules

Post by BlinkerSpawn » March 11th, 2017, 1:26 pm

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]

Image

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

Re: Use Smoothiness to classify rules

Post by shouldsee » March 11th, 2017, 1:33 pm

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

Post by shouldsee » March 14th, 2017, 8:02 pm

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
-2.1356.mcov.0.0144.std.0.5001.densi.2dntca-b01ce2acein3ckqy4akqrw5ei6acis01ce2acik3cikq4cejknqtw5ejkq6ce.01e842611ed01779706913f85f.jpg (46.81 KiB) Viewed 4656 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
-2.1059.mcov.0.0340.std.0.5009.densi.2dntca-b02acein3acekr4ejknrw5ckr6ck7ce8s1e2aikn3aenry4eijkrz5aikry6cn8.32016f6cd0a48685bfcf38c0d9.jpg (40.42 KiB) Viewed 4656 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.

Code: Select all

x = 92, y = 79, rule = B012-k3ckqy4akqrw5ei6aci/S012acik3cikq4cejknqtw5ejkq6ce
28$30bob2ob5ob2ob2o4b7ob2o$29b7o4b5o2b3obo2b6o$29bo2b2o2b3o2b6o3bo2b6o
$29b9ob7ob3ob2o2b3obo$29bob8o3b3o2b5ob3ob3o$31b3obo2b8o2b12o$29b6ob2ob
3ob2o3b4ob5obo$29bob2ob6ob3ob2ob2o2bobo3b2o$30b7ob9obob5o2b2o$30b2ob5o
bob3o2bo2b2o2bo2b2obo$29b7ob4obob16o$29b7o2b10o2b3obo3bo$31b5obob3ob4o
bo2b4ob4o$29b4ob3obob4ob4ob2o2b6o$29b6o2b6ob2o3b8o$29b4obob14obo2bob4o
$30b10o3b4ob12o$29b3ob3obob4ob2o2b3o2b6o$29bob6ob4ob2ob4ob9o$30b9ob4ob
4ob4ob2ob2o$29b2o2b15ob6o2bobo$30b4o2b4ob6ob12o$29b6obo2bob3obo2b2ob3o
bob2o$29bob3ob9o2b2ob7ob2o$29b7o2b3o2b4o2b2obob2ob3o$29bob6o2b8obob6o
2b2o$29b6o2b2o2bob17o$29b3ob16ob3ob2ob3o$30b3ob3ob2o3b2ob6o2bob2obo!

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

Re: Use Smoothiness to classify rules

Post by shouldsee » March 16th, 2017, 6:14 am

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

Post by shouldsee » March 18th, 2017, 10:12 am

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

Post by shouldsee » March 20th, 2017, 11:56 am

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

Code: Select all

## 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 golly

rnum0=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;
	pass
else:
	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

Post by shouldsee » March 21st, 2017, 5:38 pm

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

Post by shouldsee » March 23rd, 2017, 7:45 pm

I have recently deploy the algorithm to an online interface. You can query the server in the following format.

Code: Select all

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

Post by shouldsee » October 26th, 2017, 4:50 pm

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.

Code: Select all

x = 90, y = 90, rule = B345678/S012678:T90,90
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$
90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
o$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$44o2b44o$o
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$90o
$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$
90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
o$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobo$90o$obobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobo$90o$obobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobo$90o$obobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobo$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

Post by shouldsee » October 30th, 2017, 11:40 am

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:

Code: Select all

good
2dntca_279a65ab3496c62bfc1c02320f
2dntca_3d9f26dab2a8f99dd11f33ebee

fine
2dntca_1c8c8a18b2aaac3142507a2560
2dntca_3d6b104fc58e7fdffb59ac3e68

bad
2dntca_3616332aca5f552773e14b0190
2dntca_3e6aabcb78eec1754ca57d041e
2dntca_0658d07674334de73d60c290d0

???
2dntca_20ec1dc3fce292c535ca344008
Early results

Code: Select all

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

Code: Select all

x = 164, y = 164, rule = B2e3ejkr4ejqrtwz5cn6aikn7e/S01c2in3aejkr4ejkqtyz5ckq6-a
bobobobobobobobobobobobobobobobob5obobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobobobo
bobobobobobobobobo$obobobobobobobobobobobobobobobobob3obobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobobo
bobobobobobobobobobobobobobobobobobobobo$35b3obobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobob
obobobobobobobobobobobobobobo$35b2obobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobo
bobobobobobobobobobo$37bobobobobobobobobobobobobobobobobobobobobobob5o
bobobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobob
obobo$34b3obobobobobobobobobobobobobobobobobobobobo6b4obobobobobobobob
obobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo$bobobobob
2o4bobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobo11bobo
bobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobob
o$obobobobobo4b2obobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobo6b4obobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobo
bobobobobobobobo$bobobobob2o6bobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobob5obobobobobobobobobobobobobobo5bobobobobobobob
obobobobobobobobobobobobobobobo$obobobobo6bo2bobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obo3bobobobobobobobobobobobobobobobobobobobobobobo$bobobobo7bobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobobobo$ob
obobobo5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobob
obobobobobobobobo$bobobobo7bobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobo
bobobobobobobobobobobobobobobobobo$obobob3o5bobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobo3bobobobobobobobobobobobobobobobobobobobobobobo$bobobobo7bobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobo
bo$obobobo7bobobobobobobobobobobobobobobobobobobobobobobobobobobob2ob
2obobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobobobobobob
obobobobobobobobobobo$bobobobo7bobobobobobobobobobobobobobobobobobobob
obobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobo3bobobob
obobobobobobobobobobobobobobobobobobobo$obobobo7bobobobobobobobobobobo
bobobobobobobobobobobobobobobobo3bo3bobobobobobobobobobobobobobobobobo
bobobobo3bobobobobobobobobobobobobobobobobobobobobobobo$bobobobo5bobob
obobobobobobobobobobobobobobobobobobobobobobobobob3ob3obobobobobobobob
obobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobo
bobo$obobob3o5bobobobobobobobobobobobobobobobobobobobobobobobobobobobo
3bobobobobobobobobob2ob2obobobobobobobobobobo3bobobobobobobobobobobobo
bobobobobobobobobobobo$bobobobobo3bobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobob2ob2obobobobobobobobobobobo3b
obobobobobobobobobobobobobobobobobobobobobobo$obobobobo5bobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2obob2obo
bobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo$bobo
bobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobo2bo2bobobobobobobobobobobo3bobobobobobobobobobobobobobo
bobobobobobobobobo$obobobobo5bobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobo3bo3bobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobo$bobobobobo3bobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$obobobobo5b
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobo5b2o2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobo$bobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobo$obobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobo$bobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
o$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobo$bobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobo$obobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3b
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobo$obobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobo$bobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bo$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobo$bobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobo$obobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobo$bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobo$obobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobo$bobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobo$obobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobo$bobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$obobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobo$bobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobo$obobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$bobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobo$obobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobo$bobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$2bob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobo$2obobobobob2ob2obobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobo$2bobobobob5obobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$2obo
bobob4o4bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobo$obobobob2o2b5obobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobo$bobobob3o2bob4obobobobobobobobob
obobobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$obobob4o3b
o2bobobobobobobobobobobobobobobobobob3ob3obobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobo$bobobobo4bo2b3obobobobobobobobobobobobobobobob2o5b2obobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobo$obobobo7bobobobobobobobobobobobobobobobobo
b3o5b3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobo$bobobo11bobobobobobobobobobo
bobobobobob2o2b5o2b2obobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobo$obobo9bobobobo
bobobobobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
o$bobobo9bobobobobobobobobobobobobobobob3o3b2ob2ob3obobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobo$obob3o9bobobobobobobobobobobobobobob3obobo7bobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobo$3bob3o7bobobobobobobobobobobobobobob3obobo
7b5obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobo$obobobobo5bobobobobobobobobobobob
obobob2o4b2o8bobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobo$bobobobo7bobobobobob
obobobobobobobob3ob3o2bob2o3bobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$obo
bobobo5bobobobobobobobobobobobobob3o3bo2bo2b2o2bobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobo$bobobobo7bobobobobobobobobobobobob3o5b4o2b3obobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobo$obobobobo5bobobobobobobobobobobobob3o11b
3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobo$bobobobo5bobobobobobobobobobo
bobob2o13b4obobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobo$obobobobo5bobobobob
obobobobobobob3obo9bo2b2obobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$bobobo
bo5bobobobobobobobobobobob4o2bo7bobo3bobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobo$obobobobo5bobobobobobobobobobob5obobobob3obo5bobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobo$bobobobo5bobobobobobobobobobob3obobobobobobobobo
3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobo$obobobobo5bobobobobobobobobo
b3o3bobobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$bobobobo5b
obobobobobobobobob3o5bobobobobobobo3bobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobo$obobobobo5bobobobobobobobob3obo5bobobobobobobo3bobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobo$bobobobo5bobobobobobobobobob3ob2o4bobobobobobo
3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobo$obobobobo5bobobobobobobobobo
bobobo5bobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$bobobobo5bo
bobobobobobobobobo3b3o5bobobobobo3bobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobo$obobobobo5bobobobobobobobobo5b2o6bobobobobo3bobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobo$bobobobo5bobobobobobobobobobo11bobobobobo3bobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobo$obobobobo5bobobobobobobobobo12b2obobobo
bo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobo$bobobobo5bobobobobobobobobob
o2b2o19bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobo$obobobobo5b2ob2obobobo
bobobobobobo19bobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobo$bobobobo5b2ob2obo
bobobobobob5o12bo6bobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobo2b2obobobobobobobobobobo$obobobobo8b
2obobobobobobobobobo19bobobobobobobobobobobobobobobobobobobobob2ob2obo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$bobobobob
o5b2o2bobobobo3bobob3o19bobobobobobobobobobobobobobobobobobobobob3o2b
2obobobobobobobobobobobobobobobobobobob2o4bobobobobobobobobobo$obobobo
bo6bo4bobobobobobobobo23bobobobobobobobobobobobobobobobobobobobo3b3obo
bobobobobobobobobobobobobobob3obob3obobobobobobobobobobo$bobobobobo9bo
bobobob3obobo23b3obobobobobobobobobobobobobobobobobobo5b3obobobobobobo
bobobobobobobob3ob3ob2ob2obobobobobobobobobobo$obobobobo6b2ob2o2bobobo
bo28bo2bobobobobobobobobobobobobobobobobobobo5bobobobobobobobobobobobo
9bo2b2obobobobobobobobobobobobo$bobobobobo7bobobobobobobo26bobo2bobob
3ob3obobobobobobobobobobobobo5bobobobobobobobobobobobo13bobobobobobobo
bobobobobobobo$obobobobo7bobobobobobobo27b2obo2bobobobob3obobobobobobo
bobobobobobo5bobobobobobobobobobobo6b2obo7bobobobobobobobobobobobo$bob
obobobo5bobobobobobobobo19b3o4bob2o3bob2o3b4obobobobobobobobobobobo5bo
bobobobobobob3o11bobo5bobobobobobobobobobobobobobo$obobobobobo3bobobob
obobobobo3bobobobobobobobob2obobobobobo11b2obobobobobobobobobobobobo5b
obobobobobobobo13bobo3bobobobobobobobobobobobobobo$bobobobobo5bobobobo
bobobobo4b2obobobobobobo2bobobobobobo5bo6bobobobobobobobobobobobo5bobo
bobobobobob3obo9bobobo3bobobobobobobobobobobobobobo$obobobobobo3b2ob2o
bobobobobo2b2o2b2obobobobobobo2bobobobobo3b2o11bobob3obobobobobobobo5b
obobobobobobobobobo7bobobo3bobobobobobobobobobobobobobo$bobobobobo5b2o
b2obobobobobo3b2o2bobobobobobo2bobobobobobo3bo2b2obobobo5bob2obobobobo
bobo5bobobobobobob2ob2obo7bobobobo3bobobobobobobobobobobobobobo$obobob
obobo4b4obobobobobo2b2o3bobobobob3ob2obobobobobobobob3obobobobobobo2bo
bobobobobobobo5bobobobobob2obob2obo5bobobob2o4bobobobobobobobobobobobo
bo$bobobobobo9bobob3obob2ob3ob2obobobobo2bobobobobobobobob3obobobobobo
bobo2bobobobobobo4bob2obobobobob3o3b3obo3bobobobo5bobobobobobobobobobo
bobobobo$4bobobobo11bob3obo2bobo2bobobobobo3b2obobobobobobobobobobobob
obobobo2bobobobobobobo2bobo2bobobobob3obobob3obobobobobobo3b3obobobobo
bobobobobobobobo$2o3b3ob2o7bobobob2obo2bobobo2bobobobobo4bobobobobobob
obobobobobobobobobo2bobobobobobo2bobobo2bobobob3obobo3b3obobobobobobob
obo3bobobobobobobobobobobobo$bo11bobob3o9bobobob2obobob4obobobobobobob
obobobobobobobobobobo2bobobobobobobo2bobo2bobobob3obo5b5obobobobobobob
o3bobobobobobobobobobobobo$o5b3obobobobobob2o6bobobobo2bobobo2bobobobo
bobobobobobobobobobobobobobobo2bobobobobobo2bobobo2bobobobobobo5b3obob
obobobobobobo2b2obobobobobobobobobobobo$3bobobobobobobobobobo5bobobobo
b3o5bobobobobobobobobobobobobobobobobobobo16b2obo2bobobobo3b4obo2bobob
obobobobobobo5bobobobob3obobobobobo$obobobobobobobobobobo7b3obobob3obo
bobobobobobobobobobobobobobobobobobobobo7bobobob3obobo2bobobob5obo2bo
2bobobobobobo11bobobo2b4obobobobobo$bobobobobobobobobobo3b2o4bobobobob
obobobobobobobobobobobobobobobobobobobobobo2b2obobobobobobobobo2bobobo
bobobobobo5bobobobobobo9bobo4bob4obobobobo$obobobobobobobobobo13bobobo
bobobobobobobobobobobobobobobobobobob3o5bobobobobobobobobob2obobobobob
3obob3ob3obobobobobo16bobo2bobobobobo$bobobobobobobobobobo3bobobobobob
obobobobobobobobobobobobobobobobobobobobobo7bobobobobobobobobo2bobobob
obobobobobobobobobobobobobo5bobo6b2ob3obobobobo$obobobobobobobobob3o3b
obob3obobobobobobobobobobobobobobobobobobobobobob3o5bobobobobobobobobo
2bobobobobob3obobob5obobobobob3obob3obobobob2o2bobobobobobo$bobobobobo
bobobobob3obobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobo
bobobobobobobo2bobobobobobobobobobobobobobobobobobobobobobobob5obobobo
bobobo$obobobobobobobobobob3obobobobobobobobo3bobobobobobobobobobobobo
bobobobobobo5bobobobobobobobob2obobobobobobo3bobobobobobobobobobobobob
obobobobobobobobobobobobo$bobobobobobobobobobobobobobobobobobobob5obob
obobobobobobobobobobobobobobo5bobobobobobobobobo2bobobobobobobo3bobobo
bobobobobobobobobobobobobobobobobobobobobo$obobobobobobobobobobobobobo
bobobobobo4bo2bobobobobobobobobobobobobobobobobo5bobobobobobobobo2bobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$bobobob
obobobobobobobobobobobobobobob2ob4obobobobobobobobobobobobobobobobo6b
2obobobobobobobo2bobobobobobob2o2bobobobobobobobobobobobobobobobobobob
obobobobobo$obobobobobobobobobobobobobobobobob2o2b2o2bobobobobobobobob
obobobobobobobobobo5bobobobobobobobo2bobobobobobobo3bobobobobobobobobo
bobobobobobobobobobobobobobobobo$bobobobobobobobobobobobobobobobobob3o
bobobobobobobobobobobobobobobobobobobo7bobobobobobobobo4bobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobo$obobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobob
obob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
$bobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobobobo
bobobo7bobobobobobobobobo4bobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobo$obobobobobobobobobobobobobo3bobobobobobobobobobobobob
obobobobobobobobobobobo4b4obobobobobobobob2obobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobo$bobobobobobobobobobobobobobo3bobo
bobobobobobobobobobobobobobobobobobobobob3o3bobobobobobobobobobo2bobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobo$2bobobobobob
obobobobobobobo3bobobobobobobobobobobobobobobobobobobobobobobob3ob3obo
bobobobobobobo2bobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobo$bobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobob
obobobobobobobob5obobobobobobobobobo2bobob3obobobobobobobobobobobobobo
bobobobobobobobobobobobobobo$5bo2bobobobobobobobobob2o4bobobobobobobob
obobobobobobobobobobobobobobobob2ob2obobobobobobobobo2bob3obobobobobob
obobobobobobobobobobo3bobobobobobobobobobobobo$3b2o2bobobobobobobobobo
bobo2bo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobo2b2o4bobobobobobobobobobobobobobobobo5bobobobobobobobobobo$6bobo
bobobobobobobobobob3obobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobo2bobo3bobobobobobobobobobobobobobobobo5bobobobobobo
bobobobobo$o6bobobobobobobobobobobob3obobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobob3o7bo2bobobobobobobobobobobobobobobo
5bobobobobobobobobobo$bobo2bobobobobobobobobobob4o2bobobobobobobobobob
obobobobobobobobobobobobobobob3obobobobobobobob2o4b3o4bobobobobobobobo
bobobobobobo5bobobobobobobobobobobo$obobo2bobobobobobobobobobo5bobobob
obobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobob2o4bobo4b
obobobobobobobobobobobobobo5bobobobobobobobobobo$b4obobobobobobobobob
3obobob3obobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobo
bob7o5b2obobobobobobobobobobobobo5bobobobobobobobobobobo$obo4bobobobob
obobobo3bo3b3obobobobobobobobobobobobobobobobobobobobobobobobobo3bobob
obobobobobobo3bobo4bob3obobobobobobobobobobobo5bobobobobobobobobobo$bo
6b3obobobob4o10bobobobobobobobobobobobobobobobobobobobobobobobobo5bobo
bobobobobobobobob3obo4bobobob3obobobobobobobo5bobobobobobobobobobobo$
2o5bo5bobobo2bob3o4bobobobobobobobobobob5obobobobobobobobobobobobobo5b
obobobobobobobobobobob3obobobobobo2bobobobobobobobobo5bobobobobobobobo
bobo$obo11bobob2obob3o4bobobobobobobobobobo3b3obobobobobobobobobobobob
obo5bobobobobobobobobobobobobobobobobo4bobobobobobobobo5bobobobobobobo
bobobobo$o3bo8bobobob2o3bobo4bobobobobobobobobo4b4obobobobobobobobobob
obobobo3bobobobobobobobobobobobobobobobobobo4bobobobobobobobo5bobobobo
bobobobobobo$bo2bo4bo4bobobob3obo7bobobobobobobobobo7bobobobobobobobob
obobobobo5bobobobobobobobobobobobobobobobobobobo2bobobobobobobo5bobobo
bobobobobobobobo$o3bo8bobobobob3o7bobobobobobobobobobo2b4obobobobobobo
bobobobobobobo3bobobobobobo3bobobobobobobobobobobobo3b2obobobobobobo5b
obobobobobobobobobo$bo12bobobobob3o7bobobobobobobobobobob3obobobobobob
obobobobobobobo5bobobobobob3obobobobobobobobobobobob3o4bobob3obo5bobob
obobobobobobobobo$o12bobobobobob3o7bobobobobobobobobob3obobobobobobobo
bobobobobobo2bo2bobobobobo2bo2bobobobobobobobobobobobo3bo10bobo5bobobo
bobobobobobobo$2bobobobo5bobobobobob3o7bobobobobobobobobobobobobobobob
obobobobobobobobo5bobobobobobobobobobobobobobobobobobobobobo6b3obo5bob
obobobobobobobobobo$o3bo10bobobobobob3o7bobobobobobobobobobobobobobobo
bobobobobobobobo7bobobobob3obobobobobobobobobobobobobobo4bob3obobo5bob
obobobobobobobobo$obobobo9bobobobobob3o5bobobobobobobobobobobobobobobo
bobobobobobobo2b2obo3bobobobobob5obobobobobobobobobobobobobo4bobobobo
5bobobobobobobobobobobo$2o4b2obo7bobobobobob3o5bobobobobobobobobobobob
obobobobobobobobobobobo2bo4bobobobobobobobobobobobobobobobobobobobobo
2bobobobobo3bobobobobobobobobobobo$b3ob2obo7bobobobobobob3o3bobobobobo
bobobobobobobobobobobobobobobobobobo4bo2bobobobobobobobobobobobobobobo
bobobobobobo2bobobobobo5bobobobobobobobobobobo$obo2bobobo7bobobobobobo
b2o2b3obobobobobobobobobobobobobobobobobobobobobobo2b2o2b2obobobobobob
obobobobobobobobobobobobobobo2bobobobobo3bobobobobobobobobobobo$b2obob
obo9bobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobobobob2ob
ob2obobobobobobobobobobobobobobobobobobobo2b3obobobobo2bo2bobobobobobo
bobobobobo$ob2obobobo9bobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobob2ob2obobobobobobobobobobobobobobobobobobob3o4bobobo3b2o
2bobobobobobobobobobobo$b4obob3o9bobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobob2ob2obobobobobobobobobobobobobobobobobobobobo
2bo3bo2bob3ob2obobobobobobobobobobobo$o4bobob3o7bobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobo2b2o3b3obobob2obobobobobobobobobobo$b4obobob3o7bobo3bo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobo9bobobobob2o3bobobobobobobobobo$ob2obobobo
b3o7b3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobob2obo2b3obobobobobobo10bobobobo$b
2obobobobob3o8bo2bobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobo3bobobobobobobobo2b
o8b2o2b2o$obob2obobobob3o5b2o2bobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob4ob2o3bob
obobobobobo5bobob5obo$bobo2bobobobob3obob3o3bobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobo3bobobobobobobob2o6bobobobobo$obobo2bobobobob4obo2bobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobo3bobobobobob2ob6obobobobobobobo4bo2bobobobobo$bobo2bobobobobob
5ob5obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobo5bobobobobob4o2bobobobobobobob4o2bobobobobobo$obobo
2bobobobobobo3bobobobobobobobobobobobobobob2ob2obobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobo3bobobobobobo5bobobobobo3bobo2b2o
2bo2bobobobobo$bobo2bobobobobobobobobobobobobobobobobobobobobobob3obob
obobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobobobobobo3b
obobobobob5obobo4b2obobobobo$obobo2bobobobobobobobobobobobobobobobobob
obobobob2ob2obobobobobobobobobobobobobobobobobobobobobobobobobobobobob
o3bobobobobob3ob3obobobobo4b3o4b2o2bo3bobobo$bobo2bob3obobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobob2o3b2obobobobo3bo3bobo2b2o5bo4bob4ob3obobo$obobo4bo2b2ob
5obobobobobobobobobobobobobobobo3bobobobobobobobobobobobobobobobobobob
obobobobobobobobobobob2ob2obobobobob2o2b3ob3ob2ob2o8bo4bo3bobo$bobo5bo
bo2bo3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobob3ob3obobobobobo3bobo2bobobobo5bo3bo2bo3bo
bo2bo$obobo3bobobo6bobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobob2ob2obobobobobo5bob4obo3bo7b
obo9bo$bobo4b2obob2o3bobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bobob4o
24b2o$obobob3obobo2bo3bob3obobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobo5bobob3o!

Last edited by shouldsee on November 1st, 2017, 2:52 pm, edited 2 times in total.

Bullet51
Posts: 536
Joined: July 21st, 2014, 4:35 am

Re: Use Smoothiness to classify rules

Post by Bullet51 » November 1st, 2017, 7:17 am

shouldsee wrote:

Code: Select all

???
2dntca_20ec1dc3fce292c535ca344008
When sending this code to Golly, it returns an error:

Code: Select all

rnum=lst[lstlen.index(26)];
ValueError:26 is not in list
Still drifting.

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

Re: Use Smoothiness to classify rules

Post by shouldsee » November 1st, 2017, 3:00 pm

[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:

Code: Select all

???
2dntca_20ec1dc3fce292c535ca344008
When sending this code to Golly, it returns an error:

Code: Select all

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

Code: Select all

## 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 golly
import KBs
rulestr=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.

Bullet51
Posts: 536
Joined: July 21st, 2014, 4:35 am

Re: Use Smoothiness to classify rules

Post by Bullet51 » November 1st, 2017, 6:45 pm

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

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

Re: Use Smoothiness to classify rules

Post by shouldsee » November 1st, 2017, 8:21 pm

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

Post by shouldsee » November 1st, 2017, 9:19 pm

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

some examples

Code: Select all

2dntca_3952c933f954dbc66faeae72c4
2dntca_3a83b99fb90e9438ac3ffd7226
2dntca_3c3bb42647288107132a5a6250
2dntca_058eeb55a8726c2a221e0e12d0
2dntca_21e8dd029b21c1623558aed4a0
2dntca_3a5186ee32ee8d7ee9770348a0
2dntca_3986fd07efbea74ba7aaa47956

Bullet51
Posts: 536
Joined: July 21st, 2014, 4:35 am

Re: Use Smoothiness to classify rules

Post by Bullet51 » November 2nd, 2017, 6:46 am

The rule 2dntca_3a83b99fb90e9438ac3ffd7226 leads me to find a gun:

Code: Select all

x = 6, y = 9, rule = B2ci3aejk4ceknqwz5eikry6ain7e/S2-kn3aejkn4aeijq5ajkqy6-i8
2o2b2o$bo2bo$2o2b2o4$2o2b2o$bo2bo$2o2b2o!
Still drifting.

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

Re: Use Smoothiness to classify rules

Post by shouldsee » November 2nd, 2017, 8:40 pm

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

Code: Select all

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

Example b3aijkq2n5aceijr4cjtyz7e6aci8s1e03aeijky2a5acijkqry4ceijrtw7c6aek 3.0
And in B/S format

Code: Select all

b3cijnq2ci5aijnqry4acejnyz7e6aeiks1c3acejknry2aen5cijknqy4aeikr7ce6aekn8	3.0
b1ce3qy2ace5aknqr4cejnrwyz7c6acekn8s1ce3ceikq2acn5cjknr4jrt7ce6acek8	3.0
b1c03aeijknqy2aeik5aciknq4aeinqwy7e6ceik8s3cejnqy2akn5cijknqr4inrz7ce6ae8	3.0
b3cei2e5cjknq4aijkqr7c6cs1c3ceijqr2aekn5ajkqy4aceijntwyz6cin8	3.0
b3aceijky2e5cejknqr4jkqyz7c6ai8s1e3ciqy2cei5acjkny4aceijkntwyz7e6cin8	3.0
b03aeijkq2acekn5acejnry4aceijwz7ce6ackn8s1ce03ceknqy2eik5cijnqr4acenqrtwy7ce6eikn8	3.0
b3aqr2a5aijr4eiqrtwyz6acen8s3iknqy2i5acikny4ijkqrtw7c6aceikn8	3.0
b3aijkq2n5aceijr4cjtyz7e6aci8s1e03aeijky2a5acijkqry4ceijrtw7c6aek	3.0
b1c03aeinry2aen5ceijqr4acejktw7c6aikn8s1e3aceknqry2ace5aknqry4aenqrtw7ce6ack8	3.0
b3jq2aceik5cjnqr4ajnrty7ce6cis3aceinqy2ekn5ejkr4aeknqrwy7ce6aekn8	2.0
b1ce03a2eikn5cjy4aeijknqrtz7ce6ekns1e03cijkny2acin5cjknqr4ejnrwyz7ce6aceik8	2.0
b1ce03ceknqr2akn5ceiy4ejknqtw6n8s1ce3cejnqy2aci5ejny4rw6cn	2.0
b3aeikr2k5aciknry4aikwy7e6aeks3aqy2aei5cijr4aceinqrtwz7ce	2.0
b3knq2an5acejkr4cek7ce6aeiks3jkqy2n5inqy4aejnrw7e6aeikn	2.0
b1c3acijknqy2cekn5aeijknr4acjqrtyz7c6ci8s1e03anqry2cn5eknqry4iknqz7ce6acikn8	2.0
b1e03aciry2cikn5ijkqr4ceijrtz7c6aikn8s1c03eijk2ck5ajknqry4eijkn7ce6ack8	2.0
b3cy2an5q4aejkqtyz7c6ceis1c3aciqr2i5eiknqy4eijnty6cn	2.0
b1ce03eiq2cikn5ejkq4aknrtwy7c6akn8s1c03eiqry2acen5cnq4aijnqtyz7ce6acek8	2.0
b3ackq2cei5enq4n7c6acekn8s1ce3cjkr2eikn5cenqry4cekqw7e6cn8	2.0
b3acejry2c5eiqr4acejqtyz7ce6as1c3aejy2ai5aejknqry4jkqt7c6aci8	2.0
b3acijy2n5aekn4ijrt6ikns1e03aeiny2aei5ekry4acijnqtwy6aek8	2.0
b3acir2ein5jkqr4cejknry7c6aceikns3aeir2aein5cijknq4eikrwyz7e6cikn8	2.0
b1ce3jnq2aceikn5jry4ejnqty7c6aeikn8s1ce3acijnqy2cn5cejnqy4eiqrz7ce6aekn8	1.0
b1c3akn2cen5acinqy4jkqrwz7c6acn8s1ce3acijkqry2acin5ainqry4acjknrtwyz7ce6aikn8	1.0
b1ce03acejnqr2ackn5acij4aeijktz6aces1c03ejnr2cn5ejkqy4aejnty7ce6acekn8	1.0
b1e03aeijnqr2acein5ckqry4aetwy7c6kns1e3eiky2acei5ejkqr4aijkqrtz7ce6aceik8	1.0
b3aiy2e5ain4aijnwz7c6ci8s1c03acinr2ceikn5cejknr4cenqty7c6cekn	1.0
b1e3aiq2aceikn5cijnqy4acjqrtwz7c6as1ce03aceiky2aci5aijkqry4aejknqrtyz7ce6ak8	1.0
b3cky2an5cikqy4acijqz7e6in8s03acqry2cek5kqr4ceinwy6ak	1.0
b1ce3jnqy2acek5aqry4cey7e6acs1e03ac2n5ajnqry4aikrtwyz7ce6ack8	1.0
b3nqr2ce5ijny4eiknwz7ce6acekns1e03aen2eik5acejny4cejqyz7ce6cik	1.0
b3nry2cen5aeikq4ejrw7c6cen8s1ce3aeijy2kn5j4cqryz7ce6aikn8	1.0
b1c3ackq2cn5ajqr4aeknrz7e6aci8s1e3ceiknq2cek5ckqry4aeqrtwyz7ce6ackn8	1.0
b3ikny2cn5acjnqr4aejktyz7c6acekns1e03eiry2ck5cejknry4aeikqtwz7ce6ace8	1.0
b1c3cejknqr2eik5eqr4eintwz7e6acekns1c03ciknry2ek5ekqry4jknqrwyz7ce6acikn8	1.0
b1e3aceijnqr2ci5ceqr4ekqrwyz7ce6aceikns1ce03ceijk2aei5ijkqry4cejnqtz7ce6aik8	1.0
b3aceijknq2ackn5acn4ciqt7c6acens1ce3ekr2aceikn5aeijknry4aeinrz7ce6aikn8	1.0
b3acikr2ci5aejqry4ceknrtyz7ce6cis03knry2cei5cijnqy4acn7ce6aen8	1.0
b03ajk2aeik5cn4ejknqrtwy7ce6ceikn8s1c03aceijry2ckn5jkny4aeirt7ce6aceikn8	1.0
b1ce03eijq2cein5aijknry4aeiqrtyz7ce6eikns1e3ikry2cen5aiknqry4einrt7ce6ceikn8	1.0
b3aeiky2ck5aceijknqy4ejqrwz6cs1c3cq2c5knqry4aeijnqrtz7ce6cein8	1.0
b3acijknq2en5eknqr4aejkrtwy7c6aikns1c3ceijnry2ceik5eijqr4aeijkqrt7ce6aen8	1.0
b1c03knqry2ci5eiqy4iknqty7ce6ekn8s1c3ikn2ce5cejknqy4ekqrtz7ce6acekn8	1.0
b3acejn2acek5eknqr4aceijnqrwy7c6ais3acy2ae5cejnr4aejknt7ce6aceik8	1.0
b3acijy2ei5ceikr4cijkrty7c6acein8s03acekny2a5cjknq4aceiqyz6aei	1.0
b1c3aceijy2acei5ckq4aeijnqrwz7ce6cekns1e3einqr2acik5ijkqr4ijknqrwy7ce6aikn8	1.0
b3knr2ceik5cknry4jkwyz7c6cekn8s1c3eikqy2ci5eikn4ceijrtwyz7ce6acek8	0.5
b3acnq2cek5ijn4nqwz6acs1e03ceiknry2eik5ceijknqry4aeijkqrwz7ce6aeikn	0.5
b3ijny2cin5ejkq4qrtw6cein8s1c3ceikn2ci5aein4cijknrty7e6aei8	0.5
b3inq2ein5aceir4ajkqrtwyz7e6e8s1e3jknqry2ckn5jqy4ijqrz6ck	0.5
b1ce3ckry2cek5aijkqr4acejknrwz7c6aikn8s1ce03cenry2e5jknqry4aikqrtwyz7ce6aek8	0.5
b3ijknqr2acei5acijknq4aceiknrtwz7c6ikn8s1ce03jknqy2cekn5ceijkqry4cejkqry7ce6akn8	0.5
b1e03aeikq2acen5air4ekqrwyz7ce6ek8s1c3acjnqry2ckn5ajknry4aijkqtyz7ce6aik8	0.5
b03ainqry2ikn5cijqry4acijknqty7ce6iks1ce3aceiknr2k5ceijnqr4eikqrtyz7ce6an8	0.5
b3ak2ceikn5akny4aw7ce6aiks1c3cqy2ak5aeny4acjknrtyz7e6ck8	0.5
b1ce03aejknqr2aekn5acejk4acejkrty7e6acins1c03aekny2ace5aikqy4cijz6e	0.5
b03aeijkqy2acik5acir4acknrtw7e6cns1ce3aceijnqy2aik5ceqry4aeknqrtwy7ce6ackn8	0.5
b3acenr2ce5aejy4ceikrtyz7c6aiks03aciky2e5knqry4enrt7c6ceik	0.5
b1e03ciqy2ace5aceijkny4acintwz7e6aeiks1c03acjnqry2ik5eiknry4ajkntyz7ce6akn8	0.5
b1ce3cejq2ckn5acjry4ceijnqtwyz7c6eks03qr2cin5jnqr4aceiknqtyz7ce6acek8	0.5
b1ce3aceijknr2aceikn5ceijnqy4ejkn7ce6aens3acikny2ack5anqry4aqz7ce6acikn8	0.5
b3aekn2ceik5acjknr4iw7c6ceikn8s1c3akqry5ceijn4ceiz7e6ci	0.5
b1ce03ajnqy2acein5cinqr4einrz7e6iks1ce3anqry2an5cinqr4cejknrwy6i	0.5
b03aijnqry2cn5cejknry4acknyz7ce6eikn8s1ce3aceinqy2ce5ajr4eqyz7ce6acekn8	0.5
b03aci5ijkny4ciknrtwyz6aeis1c03ciny2ci5aceikqr4ajkrwy7ce6akn	0.5
b3ajk2i5acekqr4ar7e6aikn8s1ce3aeijr2aein5aijnr4aikry7c6ik	0.5
b3aceiky2cn5cjy4eirwy6ei8s1e3acn2ckn5aceijkqy4iknty7c6cekn	0.5
b1e03i2i5eijnr4acijnry6ais1c03ejnq2en5aceijknqry4cijnqrw7ce6aek8	0.5
b3jqr2ce5aeijnqr4ciz7e6kn8s03aijqry2en5cijqr4cejwz6in8	0.5
b3cy2cen5aij4iwz7e6ns1e3ejky2aek5ceiy4ceijtz7c6cik	0.5
b1c03ceinry2cik5aceijknq4cjknrtw6aeikns1ce3aejkny2ack5ceknry4aceijt7ce6aceikn	0.5
b3acek2cekn5anr4cijky6eins1c03acer2cn5eknqy4jrt7c6eik8	0.5
b1e3ejkny2ek5nq4ijkqy7ce6aeks1e3acijn2aeikn5ceijknqr4acejnqtz7ce6ain8	0.5
b3ainqy2i5aijq4eikqrtyz6cei8s1e3acijq2ein5acijnqr4cjnqrt7e6aein	0.5
b3cnqy2c5cir4acintwz7ces1ce3ijnry2aikn5ry4crwz7e6akn8	0.0
b1e03airy2ain5aenqry4aciknqrtwy7c6aikn8s1ce03acijqy2aeik5aikqry4aeijnqtw7ce6ak8	0.0
b1c3ekq2aceik5cejknq4aijtyz6cns1e3ceijnqry2cen5ceijkn4ijnqrtwz7ce6acekn8	0.0
b3jy2cn5ejry4ejnt7c6acekn8s1ce3cikry2ck5acjnqry4acknqt6aei	0.0
b3eiqy2ei5acikn4cejknqrtz7c6cek8s1ce03inry2cen5akn4ckqrtz7ce6acik	0.0
b3aceikr2ce5aeinqr4ekw7c6ikns1c03iy2ik5in4aceiqy7c6aceikn	0.0
b03cijr2aen5ceknr4cirtw7e6ak8s1ce03acjkq2aceikn5aeijkry4acijkrtw7ce6aeikn8	0.0
b3cjn2cn5aeijr4ijrwyz7c6ains1c03acky5aenr4aiqrtz7c6ci8	0.0
b1ce3ceijkny2aek5cinry4ceijkqwz7ce6ceik8s1e3jny2eik5acinqy4aiz7ce6akn	0.0
b3cejn2cn5cijknqy4eijqy7c6ci8s1e3iky2ekn5ceijny4acikrtyz7ce6ikn	0.0
b3ceijry2ein5ej4cjknqrtz7e6aeikns1ce3ciqy2ik5q4acenqrwyz7e6aek	0.0
b1c03ceijkr2ac5aery4acinqrtwy6as03airy2ci5acejnry4acknqrtyz7ce6aekn8	0.0
b3cny2a5cny4cijknz6eks1c03ack2cei5ijqy4aeijnqwyz6acn	0.0
b1c03aeiknqry2ik5cij4aikt7ce6aekn8s1e3eiy2ac5ajkqr4eijkntwz7ce6ackn8	0.0
b03aeknry2eikn5cejnqr4cejrw7ce6aen8s3aceijn2ackn5ceknr4acenqyz7ce6aeik8	0.0
b1ce03aciknqr2aikn5aiqr4airtyz6es1ce03ceky2acikn5ain4cijqtwy6cikn	0.0
b1c3aijnqy2ac5ejnr4aiknyz7c6iks3acnqr2n5acejnqy4acinyz7ce6ce	?
b3acr2a5cijqr4acjky7e6acins3aceir2in5eijnr4ceijqtyz7ce6aceik8	?
b03ceiknr2acein5aeijknry4iknqtz7ce6aceikns03aj2a5aikqry4nyz7c6ac8	?
b1ce03acr2ack5acejknqr4aceijkntwyz7ce6ceik8s1c3q2akn5ikqr4inqy7e6k	?2
b1ce03qy2acekn5ejk4aciknqwz7e6acek8s1e3ckny2cin5ceijkqry4cjny7e6ace8	?2
b1ce03eikr2acik5aceijkr4aeijkrtwyz7c6acekns1e3aeijn2acik5acinqr4ejqrz7e6cin	?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
The region that contains the 96 rules
016_0010.png (86.29 KiB) Viewed 3841 times

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

Re: Use Smoothiness to classify rules

Post by shouldsee » March 27th, 2018, 12:02 pm

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

Bullet51
Posts: 536
Joined: July 21st, 2014, 4:35 am

Re: Use Smoothiness to classify rules

Post by Bullet51 » March 31st, 2018, 1:47 am

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.

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

Re: Use Smoothiness to classify rules

Post by shouldsee » March 31st, 2018, 4:15 am

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

Code: Select all

## Written by Feng (shouldsee.gem@gmail.com) March 2018.
import golly
import KBs

import random,re,os



prefix,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

Code: Select all

import random
import golly as g


#import replacer


def 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
CA-2nd-order.png (40.32 KiB) Viewed 2664 times

Bullet51
Posts: 536
Joined: July 21st, 2014, 4:35 am

Re: Use Smoothiness to classify rules

Post by Bullet51 » March 31st, 2018, 9:50 am

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.
B0/S8 processed by a filter.
1.png (103.75 KiB) Viewed 2643 times
Most other rules are chaotic, especially B1 and B2 ones. Nothing in B4 rules could escape their initial bounding box.
Still drifting.

User avatar
77topaz
Posts: 1345
Joined: January 12th, 2018, 9:19 pm

Re: Use Smoothiness to classify rules

Post by 77topaz » March 31st, 2018, 4:40 pm

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.

Post Reply