gencols: techniques

For scripts to aid with computation or simulation in cellular automata.
User avatar
dvgrn
Moderator
Posts: 10612
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Problem with gencols/3g.py

Post by dvgrn » July 14th, 2017, 1:12 pm

gmc_nxtman wrote:

Code: Select all

5, 6, 7, 9, 8, 9, 12, 11

Code: Select all

x = 7, y = 9, rule = B3/S23
4bobo$o3b2o$b2o2bo$2o3$5bo$4b2o$4bobo!
In case there's something odd with gencols itself, here's a few lines of 3g.col...
Thanks! It all looks perfectly healthy to me, but there's always a reason why these things aren't working. Probably something obvious, once somebody points it out.

Here's what your 3g.col output is really saying, when you unpack each line by replacing exclamation points:

Code: Select all

......*
....*.*
.....**





.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**





.....**
....*.*
......*
.............**
.............*.*
.............*



---------------------------



...*
.*.*
..**







.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**







...**
..*.*
....*
...........**
...........*.*
...........*



---------------------------



...*
.*.*
..**






.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**






...**
..*.*
....*
...........**
...........*.*
...........*



---------------------------



..*
*.*
.**







.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



.....*
...*.*
....**






.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**






.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**






....**
...*.*
.....*
............**
............*.*
............*



---------------------------



....*
..*.*
...**







.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**







..**
.*.*
...*
..........**
..........*.*
..........*



---------------------------



....*
..*.*
...**






.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**






..**
.*.*
...*
..........**
..........*.*
..........*



---------------------------



.......*
.....*.*
......**




.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



.......*
.....*.*
......**



.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



......*
....*.*
.....**






.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



.....*
...*.*
....**







.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**







....**
...*.*
.....*
............**
............*.*
............*



---------------------------



........*
......*.*
.......**



.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**






.....**
....*.*
......*
.............**
.............*.*
.............*



---------------------------



..*
*.*
.**







.....**
....*.*
......*
.............**
.............*.*
.............*



---------------------------



...*
.*.*
..**








.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**








...**
..*.*
....*
...........**
...........*.*
...........*



---------------------------



..*
*.*
.**








.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**








....**
...*.*
.....*
............**
............*.*
............*



---------------------------



....*
..*.*
...**








.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**








..**
.*.*
...*
..........**
..........*.*
..........*



---------------------------



..*
*.*
.**








.....**
....*.*
......*
.............**
.............*.*
.............*



---------------------------



..*
*.*
.**







......**
.....*.*
.......*
..............**
..............*.*
..............*



---------------------------



..*
*.*
.**






......**
.....*.*
.......*
..............**
..............*.*
..............*



---------------------------



..*
*.*
.**





......**
.....*.*
.......*
..............**
..............*.*
..............*



---------------------------



..*
*.*
.**




......**
.....*.*
.......*
..............**
..............*.*
..............*



---------------------------



..*
*.*
.**



......**
.....*.*
.......*
..............**
..............*.*
..............*



---------------------------



..*
*.*
.**


......**
.....*.*
.......*
..............**
..............*.*
..............*



---------------------------



..*
*.*
.**








......**
.....*.*
.......*
..............**
..............*.*
..............*



---------------------------



..*
*.*
.**









...**
..*.*
....*
...........**
...........*.*
...........*



---------------------------



..*
*.*
.**









.**
*.*
..*
.........**
.........*.*
.........*



---------------------------



..*
*.*
.**









....**
...*.*
.....*
............**
............*.*
............*



---------------------------



..*
*.*
.**









..**
.*.*
...*
..........**
..........*.*
..........*



---------------------------



..*
*.*
.**









.....**
....*.*
......*
.............**
.............*.*
.............*



---------------------------



...*
.*.*
..**









.**
*.*
..*
.........**
.........*.*
.........*
That's gliders traveling NW, NE, and SE, all right, and the NW and NE ones start interacting between T=10 and T=13, and the next one interacts by 12 ticks after that, T=25 (unless it misses, which does happen sometimes in edge cases like the last line you quoted -- I believe that's known gencols behavior). So far so good -- gencols seems to be doing its job.

Code: Select all

..*
*.*
.**









..**
.*.*
...*
..........**
..........*.*
..........*
If you rotate your sample R recipe by 180 degrees and back it off by a dozen ticks or so, it certainly looks like something that should show up in some line or other of your 3g.col. So why isn't it there? Or is the script not seeing it?

One thing you could do is make your own test.col and point the script at that --

Code: Select all

*.*!.**!.*!!!!.....**!.*..**!.**...*!*.*!
Very likely chris_c's script will find the R-pentomino fine if you append the above line to 3g.col -- though it will take a while of course. Should be pretty much instantaneous if the above is the only line in the file. What kind of run times are you seeing, to get through the full 3g.col and back to a command prompt?

If that R-pentomino collision isn't in 3g.col, for whatever reason, then it would be good to know why. I can have a look later. Anyone else have an easy explanation in the meantime? I'm not really a gencols expert, I just play one on the forums...!

User avatar
gmc_nxtman
Posts: 1150
Joined: May 26th, 2015, 7:20 pm

Re: gencols: techniques

Post by gmc_nxtman » July 14th, 2017, 1:33 pm

I appended the test sample to the beginning of 3g.col (also entering a different population sequence as necessary), and the script didn't find it.

Code: Select all

8, 9, 12, 11, 18, 11, 11, 10
I also tried with the original collision (....*.*!*...**!.**..*!**!.....*!....**!....*.*) and appended that. Entering the original corresponding population sequence into the script doesn't seem to find that either. Doing a quick ctrl-F search finds neither of the possible R-pentomino collisions, which might suggest a problem with gencols as well, or a not-thorough-enough search on my part...!

User avatar
dvgrn
Moderator
Posts: 10612
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: gencols: techniques

Post by dvgrn » July 14th, 2017, 2:03 pm

gmc_nxtman wrote:I also tried with the original collision (....*.*!*...**!.**..*!**!.....*!....**!....*.*) and appended that. Entering the original corresponding population sequence into the script doesn't seem to find that either.
That's not the original collision -- should be ....*.*!*...**!.**..*!**!!!.....*!....**!....*.*!

Looks like maybe you hand-translated the RLE, same as I did? There's a "3$" in the middle that actually means "two blank lines" -- I did it wrong also (!). And I only checked to see that my reconstruction made an R-pentomino, and didn't notice that it wasn't the same one... sometimes the Life universe just doesn't play fair.

Code: Select all

....*.*
*...**
.**..*
**
.
.
.....*
....**
....*.*
vs. my version (unrotated):

Code: Select all

....*.*
*...**
.**..*
**
.
.
.
.....*
....**
....*.*
gmc_nxtman wrote:Doing a quick ctrl-F search finds neither of the possible R-pentomino collisions, which might suggest a problem with gencols as well, or a not-thorough-enough search on my part...!
You wouldn't find your !*.-encoded collision in the 3g.col file, nor mine, though I did rotate mine 180 degrees so that's one step closer. You'd have to back all the gliders up by 10-13 ticks to get a pattern that maybe ought to be in the list.

In general it's probably best to spend at least a few days continuing to assume that you and I are making mistakes like the above, and try to find them... and then look at all of the results gencols is actually putting out again. What chris_c's script does, and for that matter what gencols does, is simple enough that usually it turns out that Problem Exists Between Keyboard And Chair... somehow.

I've double-checked both of your population sequences with LifeViewer ('G' shortcut), by the way -- definitely don't see any mistakes there.

EDIT: Are you letting the script run to completion? How long does it take for the full 3g.col?

EDIT2: On second reading, that script really ought to be rewritten to not use the clipboard -- it's assuming that nobody will use the clipboard for anything else while the script is running. Otherwise it might silently lose matches from early in the run, or possibly error out mysteriously if the clipboard contents look like invalid RLE.

It's pretty simple to patch it to use g.getcells(g.getrect()) instead -- maybe copy results-so-far to the clipboard only on demand, say if the user hits Ctrl+C while the script is running.

M. I. Wright
Posts: 372
Joined: June 13th, 2015, 12:04 pm

Re: gencols: techniques

Post by M. I. Wright » August 20th, 2017, 8:29 pm

Minor necro, apologies, but I'm quite confused about the meaning of "Also match the phase of this pattern with pattern 2" in the Arguments.Explanation description of -test2. As I understand it, -del and -test1 all serve to forcefully ignore some desired pattern such that it doesn't interfere with the output filters, so what additional functionality does -test2's phase-matching provide?

EDIT: Oh. Duh. -nph can change the phase of pattern2, so -test2 will simply advance its given pattern automatically by however much is needed in order to match it with the current pattern2 phase. After looking at codeholic's pi fuse examples early in this thread it's easy to see when this is useful.

M. I. Wright
Posts: 372
Joined: June 13th, 2015, 12:04 pm

Re: gencols: techniques

Post by M. I. Wright » September 1st, 2017, 2:38 pm

Hm.

Code: Select all

x = 31, y = 9, rule = B3/S23
b2o2bob2o$o2bo2b2o$bobo$2bo$8bo7b6o$6b3o7bo5bo5b2o$5bo10bo10b4o$6bo10b
o4bo3b2ob2o$7b2o10b2o6b2o!
There are plenty of possible placements for a third *WSS that leave the transient eater intact, but I can't seem to get gencols to find any of them. Perhaps I'm misunderstanding how -test1 works... could somebody check this over, please?

gencols:

Code: Select all

./gencols -pat obj/2wss_loafer.life obj/allss_w.list -nph 4 -tc 17 45 -gen 200 -test1 obj/eater_se1.life -filt ap > findeater.col
Finishes search with 0 results.

obj/2wss_loafer.life:

Code: Select all

.**..*.**
*..*..**
.*.*
..*
........*.......******
......***.......*.....*.....**
.....*..........*..........****
......*..........*....*...**.**
.......**..........**......**

User avatar
Scorbie
Posts: 1692
Joined: December 7th, 2013, 1:05 am

Re: gencols: techniques

Post by Scorbie » November 7th, 2017, 1:05 pm

Any idea why gencols cannot find some diuresis stabilizations?

diuresis.life

Code: Select all

....**.......................
..*..*.......................
..**.*.*.....................
...*..**.....................
...*.........................
.*.**........................
.**..*..........**...........
....*..........*.*...........
.***...........**............
*...***........*.............
.***..*......................
....*........................
...*.........................
...**........................
......*......................
.******........*.............
.*.............**............
....*..........*.*...........
...*.*..........**...........
...**........................
......................**.....
......**..............**.....
.....*.*..............**.....
.....*................*......
....**...............*.*.....
......................*.*.***
.......................*.****
........................*....
pd.list

Code: Select all

..*..*....*..*..!***..******..***!..*..*....*..*..!
.*.!.*.!***!...!...!***!.*.!.*.!.*.!.*.!***!...!...!***!.*.!.*.!
command

Code: Select all

./gencols -pat diuresis.life pd.list -nph 15 -tc 5 30 -gen 91 -del1 -del2 -nosynch -filt ap | ./makematrix > test.life
It missed this:

Code: Select all

x = 36, y = 28, rule = B3/S23
4b2o$2bo2bo$2b2obobo14bo2bo4bo2bo$3bo2b2o12b3o2b6o2b3o$3bo18bo2bo4bo2b
o$bob2o$b2o2bo10b2o$4bo10bobo$b3o11b2o$o3b3o8bo$b3o2bo$4bo$3bo$3b2o$6b
o$b6o8bo$bo13b2o$4bo10bobo$3bobo10b2o$3b2o$22b2o$6b2o14b2o$5bobo14b2o$
5bo16bo$4b2o15bobo$22bobob3o$23bob4o$24bo!

User avatar
Goldtiger997
Posts: 762
Joined: June 21st, 2016, 8:00 am

Re: gencols: techniques

Post by Goldtiger997 » October 6th, 2018, 8:54 pm

I've been trying to use gencols to find a p42 gun, as suggested here by Sokwe. By using commands such as...

Code: Select all

time ./gencols  -pat obj/p42.life obj/p21-1.life -nph 21 -tc 3 11 -gen 43 -filt ap > p42gunhope.col
...gencols returns a lot of results. However, I've ran into issues when trying to filter the results to find patterns where the p42 and p21 oscillators are not destroyed. I pretty sure the way of doing this is to use the -del1 and -del2 options, and then use -filt ap to ensure that the deletion succeeded. But when I run a command like this...

Code: Select all

time ./gencols  -pat obj/p42.life obj/p21-1.life -nph 21 -tc 3 11 -gen 43 -nosynch -del1 -del2 -filt ap > p42gunhope.col
...gencols returns no results, even though there are some. This may just be because my command is incorrect, but I suspect it's something else because when I enter the example command for finding the Gosper Glider Gun...

Code: Select all

time ./gencols -pat obj/gunhalf1.life obj/gunhalf2.life -nph 15 -tc 12 20 -gen 31 -nosynch -del1 -del2 -filt g > glidergun.col
...gencols also returns no results. Strangley enough, other examples with -del commands (such as the buckaroo reflector) seem to work.

So has anyone else encountered similar issues before and/or know how to fix it?

User avatar
2718281828
Posts: 738
Joined: August 8th, 2017, 5:38 pm

Re: gencols: techniques

Post by 2718281828 » August 20th, 2019, 3:10 pm

If I got it correctly gencols returns a list of interacting pattern.
E.g. this is counted as 'collision' of 2 gliders in Life:

Code: Select all

x = 9, y = 4, rule = B3/S23
6b3o$2bo3bo$obo4bo$b2o!
This is due to possible 2n, 2k and 2i (Hensel notation) neighbourhood. I did not dive deep into the gencols code, but is it feasible to modify the code so that these 'collisions' are removed?

User avatar
A. Erkiaga
Posts: 18
Joined: November 1st, 2016, 12:24 pm

I can't get gencols to find a certain pattern

Post by A. Erkiaga » October 18th, 2021, 2:49 am

So, I was trying to get Paul Callahans' modified version of gencols to find an already-known reaction in rule B3678/S23. I provided the following arguments:

Code: Select all

./gencols.exe -pat good_ship1.in glider.in -nph 4 -tc 5 90 -gen 136 -test1 good_ship1_refl.in -nosynch -filt ap
With 'good_ship1.in' containing:

Code: Select all

..**
..*.**
***
*..*..*
.*....*
.*..*
.*.*..*
......*
...***
'good_ship1_refl.in' (a diagonally reflected version of the pattern above):

Code: Select all

..**
..*.***
***
*..*..*.*
.*...*..*
.*......*
...**.**
And 'glider.in':

Code: Select all

.*
..*
***
With those parameters, I would expect it to find the following pattern (note that the pattern in 'good_ship1_refl.in' actually appears at gen 135):

Code: Select all

x = 28, y = 34, rule = B3678/S23
2bo$obo$b2o23$23b2o$23bob2o$21b3o$21bo2bo2bo$22bo4bo$22bo2bo$22bobo2bo
$27bo$24b3o!
Is there anything I'm doing wrong?

Sokwe
Moderator
Posts: 2645
Joined: July 9th, 2009, 2:44 pm

Re: I can't get gencols to find a certain pattern

Post by Sokwe » October 18th, 2021, 6:41 am

A. Erkiaga wrote:
October 18th, 2021, 2:49 am
So, I was trying to get Paul Callahans' modified version of gencols to find an already-known reaction in rule B3678/S23.
You want Paul Tooke's modification, since Paul Callahan's original gencols program only works for Conway's Game of Life.
A. Erkiaga wrote:
October 18th, 2021, 2:49 am
Is there anything I'm doing wrong?
I see two issues. First, you need to include "-rule B3678/S23" in your parameters.

Second, good_ship1_refl.in is not in the correct location relative to good_ship1.in. -test1 places the upper left corner of good_ship1_refl.in at the same position that it placed the upper left corner of good_ship1.in. In the example you gave, the upper left corner of good_ship1_refl.in is translated 7 cells left and 5 cells up from where good_ship1.in was initially placed. One way to correct this is to use this file in place of good_ship1.in:

good_ship1_alt.in:

Code: Select all

.
.
.
.
.
.........**
.........*.**
.......***
.......*..*..*
........*....*
........*..*
........*.*..*
.............*
..........***
Then you can run the following command:

Code: Select all

./gencols.exe -rule B3678/S23 -pat good_ship1_alt.in glider.in -nph 4 -tc 5 90 -gen 136 -test1 good_ship1_refl.in -nosynch -filt ap > good_ship1_output.txt
I sent the output to the file good_ship1_output.txt, because there are a lot of solutions. Notice that if you use your original good_ship1.in instead of good_ship1_alt.in, then you get no solutions.

Also, I moved your post to the "gencols techniques" thread.
-Matthias Merzenich

User avatar
A. Erkiaga
Posts: 18
Joined: November 1st, 2016, 12:24 pm

Re: gencols: techniques

Post by A. Erkiaga » October 18th, 2021, 8:52 am

Thank you! I think I simply didn't transcribe the '-rule' argument to the post, but I remember using it. However, I was not aware that patterns were aligned in that way, which certainly was the mistake in my attempt :)

GUYTU6J
Posts: 2200
Joined: August 5th, 2016, 10:27 am
Location: 拆哪!I repeat, CHINA! (a.k.a. 种花家)
Contact:

Re: gencols: techniques

Post by GUYTU6J » May 19th, 2022, 2:41 am

I am trying to find a two-engine period-54 T-ship gun in Glimmering Garden with Paul Tooke's INT-compatible modification of gencols. The p54 engine is

Code: Select all

.**
.*...**
*.***.*
.*.*.*
.
....*
...***
..*..**
..****
...**
.
.
.
.....*.*.*
....*.***.*
....**...*
........**
There are two issues I have come across. First, the program exits immediately if the input -rule is written as B3-jknr4ity5ijk6i8/S23-a4city6c7c, and the output is

Code: Select all

Invalid character (110) in rule string
This can be fixed by using B3aceiqy4ity5ijk6i8/S23-a4city6c7c instead without first negation (but with the second) in the rulestring; nonetheless, there is definitely some recognition bug.
Second, with the following command

Code: Select all

gencols.exe -rule B3aceiqy4ity5ijk6i8/S23-a4city6c7c -pat input.life input.life -nph 54 -tc 2 55 -gen 55 -nosynch -del1 -del2 -filt p > col2.txt
a number of results are found

Code: Select all

#R S23-a4ciyt6c7c/B3ceaiyq4iyt5kij6i8
.**!.*...**...........**!*.***.*...........*...**!.*.*.*...........*.***.*!..................*...*!....*!...***.............*.*!..*..**...........*.*...*!..****............*..*.***!...**............*..***..*!.................*..*****!..................***..*!!.....*.*.*!....*.***.*...........*.*.*!....**...*...........*.***.*!........**...........**...*!.........................**! .**!*.*!.*!**! 7 (1,0,0)
..................**!..................*...**!.................*.***.*!..................*...*!.**................*.*!.*...**............**....*!*.***.*...............**..*!.*.*.*............*.*.....*!.................**.....***!....*............*.*!...***...............*!..*..**!..****.............*!...**.................*.*.*!.....................*.***.*!.....................**...*!.........................**!.....*.*.*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
.**................**!.*...**............*...**!*.***.*...........*.***.*!.*.*.*.............*...*!....................*.*!....*...............**....*!...***.................**..*!..*..**............*.*.....*!..****............**.....***!...**.............*.*!......................*!!....................*!.....*.*.*.............*.*.*!....*.***.*...........*.***.*!....**...*............**...*!........**................**! *!*!*! 3 (2,0,0)
.**................**!.*...**............*...**!*.***.*...........*.***.*!.*.*.*.............*...*!....................*.**!....*..............**..*!...***..............*.*.*..**!..*..**...........**.....*..*!..****...........**.........*!...**.....................**!!!!.....*.*.*.............*.*.*!....*.***.*...........*.***.*!....**...*............**...*!........**................**! ***! 3 (2,0,0)
.**!.*...**!*.***.*............**!.*.*.*.............*...**!..................*.***.*!....*..............*!...***..............*.*.*!..*..**............**...*!..****..............*..**..***!...**......................*.*!............................**!..................*........*!!.....*.*.*!....*.***.*!....**...*.............*.*.*!........**............*.***.*!......................**...*!..........................**! *!*!*! 3 (2,0,0)
.**!.*...**.............**!*.***.*.............*...**!.*.*.*.............*.***.*!....................*.*.*!....*.....................**.**!...***...................*.....*!..*..**..................*..*...*!..****...................**.....**!...**......................*...**!...............................*!!!.....*.*.*!....*.***.*.............*.*.*!....**...*.............*.***.*!........**.............**...*!...........................**! .*!*.*!.**! 5 (1,0,0)
.**..................**!.*...**..............*...**!*.***.*.............*.***.*!.*.*.*...............*.*.*!...........................**.**!....*.....................*.....*!...***....................*..*...*!..*..**...................**.....**!..****......................*...**!...**...........................*!!!!.....*.*.*...............*.*.*!....*.***.*.............*.***.*!....**...*..............**...*!........**..................**! .*!*.*!.**! 5 (1,0,0)
.....................**!.....................*...**!....................*.***.*!.....................*.*.*.*!.**.....................*.**.****!.*...**..................**....**!*.***.*.................**.....*...*!.*.*.*...................***.......*!..........................*.....*..*!....*...........................**!...***!..*..**!..****!...**....................*.*.*!........................*.***.*!........................**...*!............................**!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.**!.*...**..............**!*.***.*..............*...**!.*.*.*..............*.***.*!.....................*...*.*..**!....*......................**.**!...***.........................*!..*..**............................*!..****..................*..*.....***!...**....................***!..........................*.......*!!!.....*.*.*!....*.***.*..............*.*.*!....**...*..............*.***.*!........**..............**...*!............................**! ***! 3 (2,0,0)
......................**!......................*...**!.....................*.***.*!.**...................*...*.*..**!.*...**.....................**.**!*.***.*.........................*!.*.*.*..............................*!.........................*..*.....***!....*.....................***!...***.....................*.......*!..*..**!..****!...**!..........................*.*.*!.........................*.***.*!.........................**...*!.....*.*.*...................**!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
........................**!.**.....................*...**!.*...**................*.***.*!*.***.*.................*...*.*..**!.*.*.*........................**.**!..................................*!....*.................................*!...***.....................*..*.....***!..*..**.....................***!..****.......................*.......*!...**!!!............................*.*.*!.....*.*.*.................*.***.*!....*.***.*................**...*!....**...*.....................**!........**! ***! 3 (2,0,0)
........................**!........................*...**!.......................*.***.*!........................*...*.*..**!.**...........................**.**!.*...**...........................*!*.***.*...............................*!.*.*.*.....................*..*.....***!............................***!....*........................*.......*!...***!..*..**!..****!...**.......................*.*.*!...........................*.***.*!...........................**...*!...............................**!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
........................**!........................*...**!.......................*.***.*!.**.....................*...*.*..**!.*...**.......................**.**!*.***.*...........................*!.*.*.*................................*!...........................*..*.....***!....*.......................***!...***.......................*.......*!..*..**!..****!...**!............................*.*.*!...........................*.***.*!...........................**...*!.....*.*.*.....................**!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.**!.*...**!*.***.*!.*...*.*..**........**!.......**.**........*...**!...........*.......*.***.*!...............*....*.*.*!....*..*.....***!.....***...............*!......*.......*.......***!.....................*..**!.....................****!......................**!.....*.*.*!....*.***.*!....**...*!........**..............*.*.*!.......................*.***.*!.......................**...*!...........................**! ***! 3 (2,0,0)
........................**!........................*...**!.**....................*.***.*!.*...**.................*.*.*!*.***.*!.*...*.*..**...............*!.......**.**..............***!...........*.............*..**!...............*.........****!....*..*.....***..........**!.....***!......*.......*!!............................*.*.*!...........................*.***.*!.....*.*.*.................**...*!....*.***.*....................**!....**...*!........**! *!*!*! 3 (2,0,0)
......................**!......................*...**!.....................*.***.*!......................*.*.*.**!............................**...*!.**............................**!.*...**.............................*!*.***.*.....................*......**!.*.*.*....................*.*......*!..........................***!....*!...***!..*..**!..****....................*.*.*!...**....................*.***.*!.........................**...*!.............................**!!.....*.*.*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
..................**!..................*...**!.................*.***.*!..................*.*.*!!.....................*!....................***!...................*..**!...................****!.**.................**!.*...**!*.***.*!.*.*.*.**!.......**...*.........*.*.*!..........**.........*.***.*!...............*.....**...*!.......*......**.........**!.....*.*......*!.....***!!!!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
...................**!...................*...**!..................*.***.*!...................*.*.*!...........................*!.............................*!................................**!................................**!.**....................*.**.....**!.*...**................***!*.***.*.................*!.*.*.*!!....*..................*.*.*!...***................*.***.*!..*..**...............**...*!..****....................**!...**!!!!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.**!.*...**...............**!*.***.*...............*...**!.*.*.*...............*.***.*!......................*.*.*!....*.........................*!...***..........................*!..*..**............................**!..****.............................**!...**.....................*.**.....**!..........................***!...........................*!!.....*.*.*!....*.***.*...............*.*.*!....**...*...............*.***.*!........**...............**...*!.............................**! ***! 3 (2,0,0)
.......................**!.......................*...**!......................*.***.*!.......................*.*.*!...............................*!.**..............................*!.*...**.............................**!*.***.*.............................**!.*.*.*.....................*.**.....**!...........................***!....*.......................*!...***!..*..**!..****.....................*.*.*!...**.....................*.***.*!..........................**...*!..............................**!!.....*.*.*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
.......................**!.......................*...**!......................*.***.*!.......................*.*.*!.**............................*!.*...**..........................*!*.***.*.............................**!.*.*.*..............................**!...........................*.**.....**!....*......................***!...***......................*!..*..**!..****!...**......................*.*.*!..........................*.***.*!..........................**...*!..............................**!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.**!.*...**!*.***.*!.*.*.*..............**!....................*...**!....*..............*.***.*!...***..............*.*.*!..*..**!..****!...**!................................*..*!........................****!........................*..*!.....*.*.*..............***!....*.***.*!....**...*!........**..............*.*.*!.......................*.***.*!.......................**...*!...........................**! .*!!.*!***! 5 (2,0,1)
.**!.*...**!*.***.*!.*.*.*..............**!....................*...**!...................*.***.*!....................*.*.*!.............*..*!.....****..............*!.....*..*.............***!.....***.............*..**!.....................****!......................**!.....*.*.*!....*.***.*!....**...*!........**..............*.*.*!.......................*.***.*!.......................**...*!...........................**! .*!***!***! 7 (2,0,-1)
..............**!..............*...**!.............*.***.*!..............*.*.*!!.................*!................***!...............*..**!...............****!................**!!!.**!.*...**...........*.*.*!*.***.*..........*.***.*!.*.*.*...........**...*!.....................**!!!.............*..*!.....****!.....*..*!.....***!!!.....*.*.*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
..................**!..................*...**!.................*.***.*!..................*.*.*!!!!.......................**!.**...................****!.*...**..............**..*!*.***.*...............***!.*.*.*.................*!!....*.................*.*.*!...***...............*.***.*!..*..**..............**...*!..****...................**!...**!!!!.....*.*.*!....*.***.*!....**...*!........**! ***!!!!!!.***! 6 (2,0,0)
................**!................*...**!...............*.***.*!................*.*.*!!!!.....................**!....................****!...................**..*!.**.................***!.*...**..............*!*.***.*!.*.*.*..............*.*.*!...................*.***.*!....*..............**...*!...***.................**!..*..**!..****!...**!!!!.....*.*.*!....*.***.*!....**...*!........**! ***!!!!!!!!.......***! 6 (2,0,0)
........................**!.**.....................*...**!.*...**................*.***.*!*.***.*.................*.*.*!.*.*.*!!....*!...***.......................**!..*..**.....................****!..****.....................**..*!...**.......................***!.............................*!!............................*.*.*!.....*.*.*.................*.***.*!....*.***.*................**...*!....**...*.....................**!........**! ***!.....***! 6 (2,0,0)
........................**!........................*...**!.**....................*.***.*!.*...**.................*.*.*!*.***.*!.*.*.*!!....*........................**!...***......................****!..*..**....................**..*!..****......................***!...**........................*!!............................*.*.*!...........................*.***.*!.....*.*.*.................**...*!....*.***.*....................**!....**...*!........**! .*..**!*.**.*!**..*! 10 (1,0,0)
..................**!..................*...**!.................*.***.*!.**...............*.*.*!.*...**!*.***.*..............*!.*.*.*..............***!...................*..**!...................****!....................**!......**!.....****!....**..*!.....***..............*.*.*!......*..............*.***.*!.....................**...*!.....*.*.*...............**!....*.***.*!....**...*!........**! ...***!!!***! 6 (2,0,0)
.**.................**!.*...**.............*...**!*.***.*............*.***.*!.*.*.*..............*.*.*!!.......................*!......................***!......**.............*..**!.....****............****!....**..*.............**!.....***!......*!!.....*.*.*..............*.*.*!....*.***.*............*.***.*!....**...*.............**...*!........**.................**! ....**!*.**.*!**! 8 (1,0,0)
..................**!..................*...**!.................*.***.*!..................*.*.*!!.....................*!....................***!...................*..**!.**................****!.*...**.............**!*.***.*!.*.*.*!!......................*.*.*!.....................*.***.*!......**.............**...*!.....****................**!....**..*!.....***!......*!!.....*.*.*!....*.***.*!....**...*!........**! *!*!*!!!!.*!.*!.*! 6 (2,0,0)
...................**!...................*...**!..................*.***.*!...................*.*.*!!......................*!.....................***!....................*..**!.**.................****!.*...**..............**!*.***.*!.*.*.*!!.......................*.*.*!......................*.***.*!......**..............**...*!.....****.................**!....**..*!.....***!......*!!.....*.*.*!....*.***.*!....**...*!........**! ***!!!!!!***! 6 (2,0,0)
........................**!........................*...**!.**....................*.***.*!.*...**.................*.*.*!*.***.*!.*.*.*.....................*!..........................***!.........................*..**!.........................****!......**..................**!.....****!....**..*!.....***!......*.....................*.*.*!...........................*.***.*!.....*.*.*.................**...*!....*.***.*....................**!....**...*!........**! .*..**!*.**.*!**..*! 10 (1,0,0)
........................**!.**.....................*...**!.*...**................*.***.*!*.***.*.................*.*.*!.*.*.*!...........................*!..........................***!.........................*..**!......**.................****!.....****.................**!....**..*!.....***!......*!............................*.*.*!.....*.*.*.................*.***.*!....*.***.*................**...*!....**...*.....................**!........**! *!*....*!*....*!.....*! 6 (2,0,0)
.**!.*...**!*.***.*!.*.*.*..............**!....................*...**!....*..............*.***.*!...***..............*.*.*!..*..**!..****!...**!........................*..*!.......................*...*!.......................*...*!.....*.*.*.............*..*!....*.***.*.............***!....**...*...............*!........**..............*.*.*!.......................*.***.*!.......................**...*!...........................**! .*!***!***! 7 (2,0,-1)
..................**!..................*...**!.................*.***.*!..................*.*.*!!.**..................*!.*...**.............***!*.***.*............*..**!.*.*.*.............****!....................**!!!.....*..*!....*...*.............*.*.*!....*...*............*.***.*!....*..*.............**...*!.....***.................**!......*!.....*.*.*!....*.***.*!....**...*!........**! .**!*.*!.*! 5 (1,0,0)
..................**!..................*...**!.................*.***.*!..................*.*.*!!.....................*!.**.................***!.*...**............*..**!*.***.*............****!.*.*.*..............**!!!!.....*..*.............*.*.*!....*...*............*.***.*!....*...*............**...*!....*..*.................**!.....***!......*!.....*.*.*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
...................**!...................*...**!.**...............*.***.*!.*...**............*.*.*!*.***.*!.*.*.*................*!.....................***!....................*..**!....................****!.....*..*............**!....*...*!....*...*!....*..*!.....***...............*.*.*!......*...............*.***.*!.....*.*.*............**...*!....*.***.*...............**!....**...*!........**! .*!*.*!**! 5 (1,0,0)
...................**!...................*...**!..................*.***.*!...................*.*.*!!.**...................*!.*...**..............***!*.***.*.............*..**!.*.*.*..............****!.....................**!!!.....*..*!....*...*..............*.*.*!....*...*.............*.***.*!....*..*..............**...*!.....***..................**!......*!.....*.*.*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
.....................**!.....................*...**!....................*.***.*!.**..................*.*.*!.*...**!*.***.*.................*!.*.*.*.................***!......................*..**!......................****!.......................**!.....*..*!....*...*!....*...*!....*..*.................*.*.*!.....***................*.***.*!......*.................**...*!.....*.*.*..................**!....*.***.*!....**...*!........**! .**!*.*!.*! 5 (1,0,0)
.**!.*...**!*.***.*!.*.*.*..............**!....................*...**!...................*.***.*!....................*.*.*!.....*..*!....*...*..............*!....*...*.............***!....*..*.............*..**!.....***.............****!......*...............**!.....*.*.*!....*.***.*!....**...*!........**..............*.*.*!.......................*.***.*!.......................**...*!...........................**! .*!!.*!***! 5 (2,0,1)
..............**!..............*...**!.............*.***.*!..............*.*.*!!.................*!................***!...............*..**!...............****!................**!!!.**!.*...**...........*.*.*!*.***.*..........*.***.*!.*.*.*...........**...*!.....................**!!!.....*..*!....*...*!....*...*!....*..*!.....***!......*!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
...................**!...................*...**!..................*.***.*!...................*.*.*!!!!!.**...................*..***!.*...**..............***..*!*.***.*...............*..*!.*.*.*.................*.*!..........................*!....*..................*...*!...***................*.***.*!..*..**...............**...*!..****....................**!...**!!!!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.**!.*...**...............**!*.***.*...............*...**!.*.*.*...............*.***.*!......................*.*.*!....*!...***!..*..**!..****!...**....................*..***!........................***..*!.........................*..*!..........................*.*!.....*.*.*...................*!....*.***.*...............*...*!....**...*...............*.***.*!........**...............**...*!.............................**! ***! 3 (2,0,0)
.......................**!.......................*...**!......................*.***.*!.......................*.*.*!!.**!.*...**!*.***.*!.*.*.*....................*..***!.........................***..*!....*.....................*..*!...***.....................*.*!..*..**.......................*!..****.....................*...*!...**.....................*.***.*!..........................**...*!..............................**!!.....*.*.*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
.......................**!.......................*...**!......................*.***.*!.......................*.*.*!.**!.*...**!*.***.*!.*.*.*!..........................*..***!....*....................***..*!...***....................*..*!..*..**....................*.*!..****........................*!...**......................*...*!..........................*.***.*!..........................**...*!..............................**!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
..................**!.**...............*...**!.*...**..........*.***.*!*.***.*...........*.*.*!.*.*.*!.....................*!....................***!...................*..**!...................****!....*..***..........**!...***..*!....*..*!.....*.*!........*.............*.*.*!.....*...*...........*.***.*!....*.***.*..........**...*!....**...*...............**!........**! ***! 3 (2,0,0)
...................**!...................*...**!..................*.***.*!.**................*.*.*!.*...**!*.***.*...............*!.*.*.*...............***!....................*..**!....................****!.....................**!!....*..***!...***..*!....*..*...............*.*.*!.....*.*..............*.***.*!........*.............**...*!.....*...*................**!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
......................**!......................*...**!.**..................*.***.*!.*...**...............*.*.*!*.***.*!.*.*.*...................*!........................***!.......................*..**!.......................****!........................**!....*..***!...***..*!....*..*!.....*.*..................*.*.*!........*................*.***.*!.....*...*...............**...*!....*.***.*..................**!....**...*!........**! ***! 3 (2,0,0)
.**!.*...**...............**!*.***.*...............*...**!.*.*.*...............*.***.*!......................*.*.*!!.........................*!........................***!....*..***.............*..**!...***..*..............****!....*..*................**!.....*.*!........*!.....*...*!....*.***.*...............*.*.*!....**...*...............*.***.*!........**...............**...*!.............................**! *!*!*! 3 (2,0,0)
.......................**!.......................*...**!......................*.***.*!.......................*.*.*!.**!.*...**...................*!*.***.*..................***!.*.*.*..................*..**!........................****!.........................**!!!....*..***!...***..*..................*.*.*!....*..*..................*.***.*!.....*.*..................**...*!........*.....................**!.....*...*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
.......................**!.......................*...**!......................*.***.*!.......................*.*.*!!.**.......................*!.*...**..................***!*.***.*.................*..**!.*.*.*..................****!.........................**!!!!....*..***.................*.*.*!...***..*.................*.***.*!....*..*..................**...*!.....*.*......................**!........*!.....*...*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
......................**!......................*...**!.....................*.***.*!......................*.*.*!!.**!.*...**!*.***.*......................*!.*.*.*..................***.***!........................*.**..*!....*...................*..**!...***......................*!..*..**....................*.*!..****....................*...*!...**....................*.***.*!.........................**...*!.............................**!!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
...................**!...................*...**!.**...............*.***.*!.*...**............*.*.*!*.***.*!.*.*.*................*!.....................***!....................*..**!....................****!........*............**!...***.***!...*.**..*!...*..**!.......*...............*.*.*!......*.*.............*.***.*!.....*...*............**...*!....*.***.*...............**!....**...*!........**! .*!*.*!**! 5 (1,0,0)
.................**!.................*...**!................*.***.*!.................*.*.*!!....................*!...................***!..................*..**!.**...............****!.*...**............**!*.***.*!.*.*.*!!.....................*.*.*!....................*.***.*!........*...........**...*!...***.***..............**!...*.**..*!...*..**!.......*!......*.*!.....*...*!....*.***.*!....**...*!........**! .**!*.*!.*! 5 (1,0,0)
.**..................**!.*...**..............*...**!*.***.*.............*.***.*!.*.*.*...............*.*.*!!........................*!.......................***!........*.............*..**!...***.***............****!...*.**..*.............**!...*..**!.......*!......*.*!.....*...*...............*.*.*!....*.***.*.............*.***.*!....**...*..............**...*!........**..................**! **!*.*!.**! 6 (1,0,0)
......................**!......................*...**!.**..................*.***.*!.*...**...............*.*.*!*.***.*!.*.*.*...................*!........................***!.......................*..**!.......................****!........*...............**!...***.***!...*.**..*!...*..**!.......*..................*.*.*!......*.*................*.***.*!.....*...*...............**...*!....*.***.*..................**!....**...*!........**! ..**!.*.*!*.*!.**! 8 (1,0,0)
......................**!......................*...**!.....................*.***.*!......................*.*.*!!.**......................*!.*...**.................***!*.***.*................*..**!.*.*.*.................****!........................**!!!........*!...***.***................*.*.*!...*.**..*...............*.***.*!...*..**.................**...*!.......*.....................**!......*.*!.....*...*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
................**!................*...**!...............*.***.*!................*.*.*!!...................*!..................***!.................*..**!.................****!..................**!.**!.*...**!*.***.*!.*.*.*..............*.*.*!...................*.***.*!...................**...*!.......................**!........*!...***.***!...*.**..*!...*..**!.......*!......*.*!.....*...*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
..................**!..................*...**!.................*.***.*!..................*.*.*!!.....................*!....................***!...................*..**!...................****!.**.................**!.*...**!*.***.*!.*.*.*!......................*.*.*!.....................*.***.*!.....................**...*!........*................**!...***.***!...*.**..*!...*..**!.......*!......*.*!.....*...*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.**!.*...**................**!*.***.*................*...**!.*.*.*................*.***.*!.......................*.*.*!!..........................*!........*................***!...***.***..............*..**!...*.**..*..............****!...*..**.................**!.......*!......*.*!.....*...*!....*.***.*................*.*.*!....**...*................*.***.*!........**................**...*!..............................**! *!*!*! 3 (2,0,0)
.**!.*...**..............**!*.***.*..............*...**!.*.*.*..............*.***.*!.....................*.*.*!....*!...***!..*..**!..****..................*..***!...**..................***.*.*!......................**....**!.........................*.**!...........................*!.....*.*.*................***!....*.***.*..............*...*!....**...*..............*.***.*!........**..............**...*!............................**! ***! 3 (2,0,0)
......................**!......................*...**!.....................*.***.*!.**...................*.*.*!.*...**!*.***.*!.*.*.*!.........................*..***!....*...................***.*.*!...***.................**....**!..*..**...................*.**!..****......................*!...**......................***!..........................*...*!.........................*.***.*!.........................**...*!.....*.*.*...................**!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
........................**!.**.....................*...**!.*...**................*.***.*!*.***.*.................*.*.*!.*.*.*!!....*!...***.....................*..***!..*..**...................***.*.*!..****...................**....**!...**.......................*.**!..............................*!.............................***!............................*...*!.....*.*.*.................*.***.*!....*.***.*................**...*!....**...*.....................**!........**! ***! 3 (2,0,0)
........................**!........................*...**!.......................*.***.*!........................*.*.*!.**!.*...**!*.***.*!.*.*.*.....................*..***!..........................***.*.*!....*....................**....**!...***......................*.**!..*..**.......................*!..****.......................***!...**.......................*...*!...........................*.***.*!...........................**...*!...............................**!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
........................**!........................*...**!.......................*.***.*!.**.....................*.*.*!.*...**!*.***.*!.*.*.*!...........................*..***!....*.....................***.*.*!...***...................**....**!..*..**.....................*.**!..****........................*!...**........................***!............................*...*!...........................*.***.*!...........................**...*!.....*.*.*.....................**!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
....................**!....................*...**!...................*.***.*!.**.................*.*.*!.*...**!*.***.*................*!.*.*.*................***!.....................*..**!.....................****!......................**!....*..***!...***.*.*!..**....**!.....*.**...............*.*.*!.......*...............*.***.*!......***..............**...*!.....*...*.................**!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
....................**!....................*...**!...................*.***.*!....................*.*.*!.**!.*...**................*!*.***.*...............***!.*.*.*...............*..**!.....................****!......................**!!....*..***!...***.*.*!..**....**..............*.*.*!.....*.**..............*.***.*!.......*...............**...*!......***..................**!.....*...*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
.**!.*...**..............**!*.***.*..............*...**!.*.*.*..............*.***.*!.....................*.*.*!!........................*!....*..***.............***!...***.*.*............*..**!..**....**............****!.....*.**..............**!.......*!......***!.....*...*!....*.***.*..............*.*.*!....**...*..............*.***.*!........**..............**...*!............................**! *!*!*! 3 (2,0,0)
......................**!......................*...**!.....................*.***.*!.**...................*.*.*!.*...**!*.***.*..................*!.*.*.*..................***!.......................*..**!.......................****!........................**!....*..***!...***.*.*!..**....**!.....*.**.................*.*.*!.......*.................*.***.*!......***................**...*!.....*...*...................**!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
......................**!......................*...**!.....................*.***.*!......................*.*.*!!.........................*!.**.....................***!.*...**................*..**!*.***.*................****!.*.*.*..................**!!!!....*..***................*.*.*!...***.*.*...............*.***.*!..**....**...............**...*!.....*.**....................**!.......*!......***!.....*...*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
........................**!........................*...**!.......................*.***.*!.**.....................*.*.*!.*...**!*.***.*....................*!.*.*.*....................***!.........................*..**!.........................****!..........................**!....*..***!...***.*.*!..**....**!.....*.**...................*.*.*!.......*...................*.***.*!......***..................**...*!.....*...*.....................**!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
........................**!........................*...**!.......................*.***.*!........................*.*.*!.**!.*...**....................*!*.***.*...................***!.*.*.*...................*..**!.........................****!..........................**!!....*..***!...***.*.*!..**....**..................*.*.*!.....*.**..................*.***.*!.......*...................**...*!......***......................**!.....*...*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
........................**!.**.....................*...**!.*...**................*.***.*!*.***.*.................*.*.*!.*.*.*!...........................*!..........................***!.........................*..**!....*..***...............****!...***.*.*................**!..**....**!.....*.**!.......*!......***...................*.*.*!.....*...*.................*.***.*!....*.***.*................**...*!....**...*.....................**!........**! *!*!*! 3 (2,0,0)
.**!.*...**!*.***.*!.*.*.*!.................**!.................*...**!........*.......*.***.*!...***.***.......*.*.*!..*..*.*.**!..***....*..........*!.......*.*.........***!......*.*.........*..**!......***.........****!.....*.*.*.........**!....*.***.*!....**...*!........**!.....................*.*.*!....................*.***.*!....................**...*!........................**! *!*!*! 3 (2,0,0)
..................**!..................*...**!.................*.***.*!..................*.*.*!!.....................*!....................***!...................*..**!.**................****!.*...**.............**!*.***.*!.*.*.*!!......................*.*.*!........*............*.***.*!...***.***...........**...*!..*..*.*.**..............**!..***....*!.......*.*!......*.*!......***!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.**!.*...**..............**!*.***.*..............*...**!.*.*.*..............*.***.*!.....................*.*.*!!........*...............*!...***.***.............***!..*..*.*.**...........*..**!..***....*............****!.......*.*.............**!......*.*!......***!.....*.*.*!....*.***.*..............*.*.*!....**...*..............*.***.*!........**..............**...*!............................**! ***! 3 (2,0,0)
....................**!....................*...**!...................*.***.*!....................*.*.*!!.......................*!......................***!.**..................*..**!.*...**..............****!*.***.*...............**!.*.*.*!!!........*...............*.*.*!...***.***.............*.***.*!..*..*.*.**............**...*!..***....*.................**!.......*.*!......*.*!......***!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.....................**!.....................*...**!....................*.***.*!.....................*.*.*!.**!.*...**!*.***.*.................*..***!.*.*.*.................*****..*!......................*..***..*!....*.................***.*..*!...***.................*...*.*!..*..**...................*.*!..****!...**....................*...*!........................*.***.*!........................**...*!............................**!.....*.*.*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.....................**!.....................*...**!....................*.***.*!.....................*.*.*!.**!.*...**.................*!*.***.*................***!.*.*.*................*..**!......................****!.......................**!....*..***!...*****..*!..*..***..*!..***.*..*...............*.*.*!...*...*.*..............*.***.*!......*.*...............**...*!............................**!.....*...*!....*.***.*!....**...*!........**! *!*!*! 3 (2,0,0)
......................**!.**...................*...**!.*...**..............*.***.*!*.***.*...............*.*.*!.*.*.*!.........................*!........................***!....*..***.............*..**!...*****..*............****!..*..***..*.............**!..***.*..*!...*...*.*!......*.*!..........................*.*.*!.....*...*...............*.***.*!....*.***.*..............**...*!....**...*...................**!........**! ..**!.*.*!*.*!.**! 8 (1,0,0)
.**..................**!.*...**..............*...**!*.***.*.............*.***.*!.*.*.*...............*.*.*!!........................*!....*..***.............***!...*****..*...........*..**!..*..***..*...........****!..***.*..*.............**!...*...*.*!......*.*!!.....*...*...............*.*.*!....*.***.*.............*.***.*!....**...*..............**...*!........**..................**! .**!*.*!.*! 5 (1,0,0)
.**...................**!.*...**...............*...**!*.***.*..............*.***.*!.*.*.*................*.*.*!!........*................*!...**..***..............***!...*......*............*..**!..*...*.*.*............****!..*.*...**..............**!..******.*!.......**!!.....*.*.*................*.*.*!....*.***.*..............*.***.*!....**...*...............**...*!........**...................**! .**!*.*!.*!**! 7 (1,0,0)
.**!.*...**.............**!*.***.*.............*...**!.*.*.*.............*.***.*!....................*.*.*!....*......................*!...***!..*..**..................*!..****.....................*.*!...**...............***.....**!....................*.....*.*!....................*..**!.....................*....**!.....*.*.*...............*.*!....*.***.*.............*...*!....**...*.............*.***.*!........**.............**...*!...........................**! **!*.*!.*! 5 (1,0,0)
.**..................**!.*...**..............*...**!*.***.*.............*.***.*!.*.*.*...............*.*.*!............................*!....*!...***....................*!..*..**.....................*.*!..****...............***.....**!...**................*.....*.*!.....................*..**!......................*....**!..........................*.*!.....*.*.*...............*...*!....*.***.*.............*.***.*!....**...*..............**...*!........**..................**! **!*.*!.*! 5 (1,0,0)
.**!.*...**.............**!*.***.*.............*...**!.*.*.*.............*.***.*!........*...........*.*.*!!......*................*!........*.*...........***!.***.....**..........*..**!.*.....*.*...........****!.*..**................**!..*....**!......*.*!.....*...*!....*.***.*.............*.*.*!....**...*.............*.***.*!........**.............**...*!...........................**! .*!*.*!.*! 4 (1,0,0)
....................**!....................*...**!...................*.***.*!....................*.*.*!!.**....................*!.*...**...............***!*.***.*..............*..**!.*.*.*...............****!........*.............**!!......*!........*.*!.***.....**.............*.*.*!.*.....*.*.............*.***.*!.*..**.................**...*!..*....**..................**!......*.*!.....*...*!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
.**..................**!.*...**..............*...**!*.***.*.............*.***.*!.*.*.*...............*.*.*!........*!........................*!......*................***!........*.*...........*..**!.***.....**...........****!.*.....*.*.............**!.*..**!..*....**!......*.*!.....*...*...............*.*.*!....*.***.*.............*.***.*!....**...*..............**...*!........**..................**! .*!*.*!.*! 4 (1,0,0)
.....................**!.....................*...**!....................*.***.*!.**..................*.*.*!.*...**!*.***.*.................*!.*.*.*.................***!......................*..**!......................****!.......................**!..*.......*!.**.......*!**.**....**!.*....*.*................*.*.*!.....*.**...............*.***.*!......*.*...............**...*!.....*...*..................**!....*.***.*!....**...*!........**! ***! 3 (2,0,0)
..................**!..................*...**!.................*.***.*!..................*.*.*!!.....................*!....................***!...**..............*..**!...*...**..........****!..*.***.*...........**!...*.*.*!!!......................*.*.*!.....................*.***.*!.***.................**...*!**.*.....................**!.***..**..**!..*..***..**!..........*!...........*!......*.***.*!......**...*!..........**! ***! 3 (2,0,0)
...**!...*...**!..*.***.*............**!...*.*.*.............*...**!....................*.***.*!.....................*.*.*!!........................*!.***...................***!**.*..................*..**!.***..**..**..........****!..*..***..**...........**!..........*!...........*!......*.***.*!......**...*.............*.*.*!..........**............*.***.*!........................**...*!............................**! ***! 3 (2,0,0)
....**................**!....*...**............*...**!...*.***.*...........*.***.*!....*.*.*.............*.*.*!!.........................*!........................***!...**..................*..**!.*...*.................****!**....*.................**!.**...*!..*****!...*.......*!........*...*.............*.*.*!.......*.***.*...........*.***.*!.......**...*............**...*!...........**................**! *!*!*! 3 (2,0,0)
......................**!......................*...**!.....................*.***.*!......................*.*.*!.....**!.....*...**..............*!....*.***.*.............***!.....*.*.*.............*..**!.......................****!........................**!!..*!.**...*!**.....**.................*.*.*!.*...*..*................*.***.*!..*.....*................**...*!...**.**.....................**!.........*.*.*!........*.***.*!........**...*!............**! ***! 3 (2,0,0)
.....**................**!.....*...**............*...**!....*.***.*...........*.***.*!.....*.*.*.............*.*.*!!..........................*!.........................***!..*.....................*..**!.**...*.................****!**.....**................**!.*...*..*!..*.....*!...**.**!.........*.*.*.............*.*.*!........*.***.*...........*.***.*!........**...*............**...*!............**................**! ***! 3 (2,0,0)
......**!......*...**...........**!.....*.***.*...........*...**!......*.*.*...........*.***.*!.......................*.*.*!!..........................*!..**.....................***!*..*.....*..............*..**!*.......***.............****!*...*.....**.............**!...**....**!...****.**.*!........*.*.*.*!.........*.***.*...........*.*.*!.........**...*...........*.***.*!.............**...........**...*!..............................**! .**!*.*!.*!**! 7 (1,0,0)
among which there is indeed a gun

Code: Select all

x = 36, y = 20, rule = B3-jknr4ity5ijk6i8/S23-a4city6c7c
b2o$bo3b2o$ob3obo$bobobo14b2o$20bo3b2o$4bo14bob3obo$3b3o14bobobo$2bo2b
2o$2b4o$3b2o$32bo2bo$24b4o$24bo2bo$5bobobo14b3o$4bob3obo$4b2o3bo$8b2o
14bobobo$23bob3obo$23b2o3bo$27b2o!
But if the -filt option uses s (spaceship) rather than p (periodic), there will be no outputs. Why?

Sokwe
Moderator
Posts: 2645
Joined: July 9th, 2009, 2:44 pm

Re: gencols: techniques

Post by Sokwe » May 19th, 2022, 5:33 am

GUYTU6J wrote:
May 19th, 2022, 2:41 am
if the -filt option uses s (spaceship) rather than p (periodic), there will be no outputs. Why?
"-filt s" only returns a pattern if, after specified deletions, it is one of Life's standard spaceships. This made sense for the original gencols as it only worked in Life.
-Matthias Merzenich

GUYTU6J
Posts: 2200
Joined: August 5th, 2016, 10:27 am
Location: 拆哪!I repeat, CHINA! (a.k.a. 种花家)
Contact:

Re: gencols: techniques

Post by GUYTU6J » May 20th, 2022, 10:58 am

Well, then, how about the rulestring issue?
---
Another case involving OCA spaceships. Input pattern:
3c20.life

Code: Select all

*.**.**
.*.*.***
*.**.**
3c20_new.life is the one above shifted 3 cells eastward, as if it has run for a period of 20 ticks.
Command

Code: Select all

gencols.exe -rule B3aceiqy4ity5ijk6i8/S23-a4city6c7c -pat 3c20.life 3c20.life -nph 20 -tc 2 21 -gen 21 -test1 3c20_new.life -test2 3c20_new.life -nosynch -filt p > 3c20.txt
gives some results as expected including

Code: Select all

x = 8, y = 17, rule = B3-jknr4ity5ijk6i8/S23-a4city6c7c
ob2ob2o$bobob3o$ob2ob2o12$ob2ob2o$bobob3o$ob2ob2o!
but

Code: Select all

gencols.exe -rule B3aceiqy4ity5ijk6i8/S23-a4city6c7c -pat 3c20.life 3c20.life -nph 20 -tc 2 21 -gen 21 -del1 -del2 -nosynch -filt p > 3c20.txt
gives no result. Does that mean the program cannot detect the spaceship after displacement?

HartmutHolzwart
Posts: 840
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: gencols: techniques

Post by HartmutHolzwart » May 20th, 2022, 12:18 pm

GUYTU6J wrote:
May 20th, 2022, 10:58 am
Well, then, how about the rulestring issue?
---
Another case involving OCA spaceships. Input pattern:
3c20.life

Code: Select all

*.**.**
.*.*.***
*.**.**
3c20_new.life is the one above shifted 3 cells eastward, as if it has run for a period of 20 ticks.
Command

Code: Select all

gencols.exe -rule B3aceiqy4ity5ijk6i8/S23-a4city6c7c -pat 3c20.life 3c20.life -nph 20 -tc 2 21 -gen 21 -test1 3c20_new.life -test2 3c20_new.life -nosynch -filt p > 3c20.txt
gives some results as expected including

Code: Select all

x = 8, y = 17, rule = B3-jknr4ity5ijk6i8/S23-a4city6c7c
ob2ob2o$bobob3o$ob2ob2o12$ob2ob2o$bobob3o$ob2ob2o!
but

Code: Select all

gencols.exe -rule B3aceiqy4ity5ijk6i8/S23-a4city6c7c -pat 3c20.life 3c20.life -nph 20 -tc 2 21 -gen 21 -del1 -del2 -nosynch -filt p > 3c20.txt
gives no result. Does that mean the program cannot detect the spaceship after displacement?
You have to give gencols the exact displacement you expect. Just take a closer look at the examples! I really need to look up the exact definition of the parameters every time I use it. But it does what it's supposed to do if set those correctly (at least for me).

GUYTU6J
Posts: 2200
Joined: August 5th, 2016, 10:27 am
Location: 拆哪!I repeat, CHINA! (a.k.a. 种花家)
Contact:

Re: gencols: techniques

Post by GUYTU6J » May 22nd, 2022, 10:39 pm

GUYTU6J wrote:
May 19th, 2022, 2:41 am
...The program exits immediately if the input -rule is written as B3-jknr4ity5ijk6i8/S23-a4city6c7c, and the output is

Code: Select all

Invalid character (110) in rule string
I see... In ASCII the character 110 is n, and indeed the rules.c used by Paul Tooke's modification uses the old non-totalistic format:

Code: Select all

/*
    Table of neighbourhoods for Alan Hensels non-totalistic rule extensions
    with mnemonics used by Johan Bontes Life32 program for compatibility
*/
#define NTNBCOUNT (51)
static int  nbhd[NTNBCOUNT] = {
    /*        c     e     k     a     i     v     y     q     j     r     t     w     z   */
    /* 0 */ 0000,
    /* 1 */ 0400, 0200,
    /* 2 */ 0500, 0240, 0402, 0440, 0202, 0104,
    /* 3 */ 0504, 0242, 0412, 0640, 0111, 0540, 0502, 0106, 0112, 0302,
    /* 4 */ 0505, 0252, 0341, 0740, 0606, 0544, 0506, 0641, 0152, 0642, 0702, 0443, 0603,
    /* 5 */ 0253, 0515, 0345, 0117, 0646, 0456, 0552, 0643, 0645, 0554,
    /* 6 */ 0257, 0517, 0355, 0317, 0555, 0653,
    /* 7 */ 0357, 0717,
    /* 8 */ 0757};
And changing n to v in the command works well. Example with LeapLife's p24 oscillator:

Code: Select all

gencols.exe -rule B2v3/S23-q -pat test.life test.life -nph 24 -tc 2 25 -gen 49 -nosynch -del1 -del2 -filt p | makematrix.exe > cols.lif
After adding #Life1.05 and changing v to n in the resulting cols.lif, the output pattern is

Code: Select all

x = 467, y = 28, rule = B2n3/S23-q
b3o48b3o64b3o46b3o30b3o13bo34bo54b3o49bo41b3o53b2o$2bo49bo67bo47bo33bo
14b2o33b2o54bo49bob2o40bo61bo$o4bo46bo3bo45b3o13bo4bo44bo3bo27bo4bo10b
obo32bobo52bo4bo45bo4b3o35bo4bo49b2ob2o5b2o$o50bobo2bo45bo15bo48bobo2b
o27bo18bo34bo51bo52bobo2bo35bo55bo7b2o$bo5bo43bo3bo46bo3bo12bo5bo41bo
3bo29bo5bo99bo5bo40b2o8bo36bo5bo45bo9bo$8bo41bo2bo4bo42bobo2bo19bo39bo
2bo4bo33bo12bo34bo57bo41bo3bo47bo42b2o7bo$3bo4bo42bo7bo41bo3bo15bo4bo
24b3o13bo7bo27bo4bo11b2o33b2o52bo4bo37bo8b2o40bo4bo41b2o5b2ob2o$6bo45b
o4bo2bo39bo2bo4bo15bo27bo15bo4bo2bo29bo10bo5bo28bo5bo53bo39bo2bobo48bo
45bo$5b3o47bo3bo41bo7bo13b3o24bo4bo15bo3bo29b3o7bobo3bobo26bobo3bobo7b
3o42b3o38b3o4bo45b3o50b2o$54bo2bobo42bo4bo2bo39bo19bo2bobo39bo5bo28bo
5bo10bo87b2obo$54bo3bo46bo3bo41bo5bo12bo3bo42b2o33b2o11bo4bo86bo$58bo
45bo2bobo48bo15bo42bo34bo12bo$56b3o45bo3bo44bo4bo13b3o91bo5bo$108bo47b
o62bo34bo18bo$106b3o46b3o62bobo32bobo10bo4bo33bo$5b3o212b2o33b2o14bo
34bob2o$5bo215bo34bo13b3o32bo4b3o38b3o$5bo3bo297bobo2bo39bo54b2o50b3o$
4bobo2bo292b2o8bo37bo4bo58bo45bo$4bo3bo47b3o245bo3bo41bo54b2ob2o5b2o
41bo4bo$3bo2bo4bo45bo242bo8b2o40bo5bo48bo7b2o42bo$4bo7bo42bo4bo239bo2b
obo52bo44bo9bo45bo5bo$5bo4bo2bo41bo244b3o4bo45bo4bo42b2o7bo55bo$8bo3bo
43bo5bo240b2obo49bo43b2o5b2ob2o49bo4bo$7bo2bobo50bo241bo49b3o44bo61bo$
7bo3bo46bo4bo344b2o53b3o$11bo49bo$9b3o48b3o!
As expected there is a period-24 glider gun.

Now the question is, is there the other issue of swapping r and y?

User avatar
LaundryPizza03
Posts: 2298
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: gencols: techniques

Post by LaundryPizza03 » June 10th, 2022, 11:57 pm

GUYTU6J wrote:
May 22nd, 2022, 10:39 pm
Now the question is, is there the other issue of swapping r and y?
Looking at the table, I immediately recognize this as an octal encoding of the neighborhood. Translating the columns for y and r gives:

Code: Select all

x = 12, y = 21, rule = lifehistory
F3.F$F3.F2.F.2F$.4F2.2F2.F$4.F2.F$F3.F2.F$.3F3.F3$.A2B4.3B$.2BA4.ABA$
.A2B4.A2B3$.ABA4.2AB$.2BA4.ABA$.A2B4.3B3$.2AB4.3A$.2BA4.3B$.2AB4.2AB!
So, no.

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

HartmutHolzwart
Posts: 840
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: gencols: techniques

Post by HartmutHolzwart » April 27th, 2023, 3:31 pm

Another trivial application of gencols

1) Create four files

crab.life

Code: Select all

.
.........**
........**
..........*
............**
...........*
.
..........*..*
..**.....**
.**.....*
...*....*.*
.....**..*
.....**
crab_g4.life

Code: Select all

........**
.......**
.........*
...........**
..........*
.
.........*..*
.**.....**
**.....*
..*....*.*
....**..*
....**
bitub.life

Code: Select all

..
..*
.*.*
..*.*
...*
bitub_g4.life

Code: Select all

.*
*.*
.*.*
..*
and then run

Code: Select all

gencols -pat crab.life bitub.life -nph 1 -tc 1 4 -gen 5 -test1 crab_g4.life -test2 bitub_g4.life -filt ap | .\makematrix -space 150 > res_tubstr2.lif
This gives one result

Code: Select all

x = 13, y = 16, rule = B3/S23
8b2o$7b2o$9bo$11b2o$10bo2$9bo2bo$b2o5b2o$2o5bo$2bo4bobo$4b2o2bo$4b2o$
8bo$7bobo$8bobo$9bo!
Maybe someone more skilled than me could modify this to search strategy to find more tubstretcher link points for known diagonal spaceships.

Post Reply