Sample metapatterns made of Calcyman's metacells

For discussion of specific patterns or specific families of patterns, both newly-discovered and well-known.
User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Wiki article

Post by gameoflifemaniac » March 18th, 2017, 3:01 pm

calcyman wrote:
Mr. Missed Her wrote:Edit: The "Categories" bar here is pretty funny.
The metacell I'm currently building (where the ground state has population 0) will have an even more ludicrous categories bar: the period is expected to be 2^34 (if I'm lucky) or 2^36 (if I'm unlucky); the grid size will be the square-root of this.
Do you mean the 0E0P metacell (what is ground state?)? And what rules will it simulate?
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: Sample metapatterns made of Calcyman's metacells

Post by calcyman » March 18th, 2017, 3:56 pm

Yes, the 0E0P cell. It will simulate any of the 2^12285 non-B0 8-state 4-neighbour rules, which can in particular simulate any of the 2^511 non-B0 2-state 9-neighbour rules.

Ground state just means state 0.
What do you do with ill crystallographers? Take them to the mono-clinic!

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

Re: Wiki article

Post by BlinkerSpawn » March 18th, 2017, 10:18 pm

calcyman wrote:
Mr. Missed Her wrote:Edit: The "Categories" bar here is pretty funny.
The metacell I'm currently building (where the ground state has population 0) will have an even more ludicrous categories bar: the period is expected to be 2^34 (if I'm lucky) or 2^36 (if I'm unlucky); the grid size will be the square-root of this.
Oh, is this going to be the self-constructing megacell I heard about a while ago?
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Sample metapatterns made of Calcyman's metacells

Post by gameoflifemaniac » March 19th, 2017, 5:31 am

calcyman wrote:Yes, the 0E0P cell. It will simulate any of the 2^12285 non-B0 8-state 4-neighbour rules, which can in particular simulate any of the 2^511 non-B0 2-state 9-neighbour rules.

Ground state just means state 0.
Ugh... you're GENIOUS :o
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Sample metapatterns made of Calcyman's metacells

Post by gameoflifemaniac » March 19th, 2017, 5:40 am

How long would it take to complete the new metacell? And what does 0E0P mean? How long would it take Golly to run those 2^34 generations?
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: Sample metapatterns made of Calcyman's metacells

Post by calcyman » March 19th, 2017, 8:18 am

gameoflifemaniac wrote:How long would it take to complete the new metacell?
A few months, I imagine. I've completed the synchronisation circuitry, and the logic circuitry, and most of the self-destruction circuitry. What's left to do is writing the slow-salvo synthesis compiler (should be straightforward, since I already wrote and ran the search program to generate all of the recipes for the compiler) and the slow-salvo-to-single-channel converter (much easier now that simeks has provided a comprehensive toolkit), then running it on the metacell to build its tape.

I also need to create syntheses for the Snark in all 4 orientations and eater2 in all 3 orientations. This will become easier once I have the compiler. I've already done the eater2 in one orientation by manually following what the compiler's algorithm would do automatically:

Code: Select all

x = 513, y = 518, rule = B3/S23
2o$2o3$2o$obo$o13$12b2o$12bobo$12bo8$36bo$35b2o$35bobo13$42b2o$42bobo$
42bo16$46bo$45b2o$45bobo11bo$58b2o$58bobo39$107b2o$107bobo$107bo9$119b
2o$119bobo$119bo22$145bo$144b2o$144bobo9$155bo$154b2o$154bobo19$175bo$
174b2o$174bobo11$185bo$184b2o$184bobo28$225b3o$225bo$226bo10$246b3o$
246bo$247bo13$254b3o$254bo$255bo3$270b3o$270bo$271bo15$279b2o$278b2o$
280bo25$285b3o$285bo$286bo40$315b3o$315bo$316bo14$334bo$333b2o$333bobo
12$351b2o$351bobo$351bo26$365bo$364b2o$364bobo16$381bo$380b2o$380bobo
11$400b2o$400bobo$400bo91$510b2o$510bobo$510bo!
And what does 0E0P mean?
It means that the 'metacell-off' pattern is literally empty. Consequently, if you take the 6-cell HighLife replicator and build it from 6 0E0P cells in GoL, the result will be a genuine replicator in GoL. Similarly, you can transfer over a quadratic replicator, or a knightship, or a reflectorless rotating oscillator from your favourite isotropic rule to obtain a (much larger, much slower) counterpart in B3/S23.

You can't do that with existing metacells (neither David's, nor Brice's, nor mine) because metapatterns can't expand beyond their original bounding box. A 0E0P metacell needs to physically construct copies of itself in each direction.
How long would it take Golly to run those 2^34 generations?
That's highly dependent on your machine's RAM. Maybe on the order of an hour or so?

If you have enough RAM (far beyond that of a desktop PC), then HashLife will 'run away' and memoize the complete life-cycle of the metacell. In that case, you could run metapatterns in real-time.
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
blah
Posts: 311
Joined: April 9th, 2016, 7:22 pm

Re: Sample metapatterns made of Calcyman's metacells

Post by blah » March 19th, 2017, 1:17 pm

calcyman wrote:... if you take the 6-cell HighLife replicator and build it from 6 0E0P cells in GoL, the result will be a genuine replicator in GoL. Similarly, you can transfer over a quadratic replicator, or a knightship, or a reflectorless rotating oscillator from your favourite isotropic rule to obtain a (much larger, much slower) counterpart in B3/S23.
But is the metacell asymmetric? If so, you can't have rotating oscillators or anything like that; all symmetry is removed.
succ

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: Sample metapatterns made of Calcyman's metacells

Post by calcyman » March 19th, 2017, 1:26 pm

blah wrote:But is the metacell asymmetric? If so, you can't have rotating oscillators or anything like that; all symmetry is removed.
True, but it would still result in a reflectorless oscillator with the property that you can halve its period by juxtaposing two non-interacting copies thereof.
What do you do with ill crystallographers? Take them to the mono-clinic!

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

Re: Sample metapatterns made of Calcyman's metacells

Post by dvgrn » March 20th, 2017, 1:06 pm

calcyman wrote:... the slow-salvo-to-single-channel converter (much easier now that simeks has provided a comprehensive toolkit)...
Have I missed anything more recent than a year ago February? I read through the "New construction arms" thread from that point on... it seems to have gone off on all kinds of interesting tangents in the last year, but not much that's really relevant to this project.

Unless I missed a later edition somewhere, it seems that this is the latest published single-channel glider output library. That certainly seems good enough for a first draft of a slow-salvo-to-single-channel compiler.

Some significant optimization would be possible with more elbow types, gliders grouped in triplets as well as pairs, etc., etc. But a smaller library and simple single-elbow design seems like a very good place to start. There still hasn't been a completed self-constructing pattern using single-channel yet -- I want to see it in action!

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: Sample metapatterns made of Calcyman's metacells

Post by calcyman » March 20th, 2017, 2:13 pm

dvgrn wrote:Unless I missed a later edition somewhere, it seems that this is the latest published single-channel glider output library. That certainly seems good enough for a first draft of a slow-salvo-to-single-channel compiler.
I was referring to your post-processed version of this ('optimized.txt'), but with simeks' extra 20-glider 44fd PUSH prepended to the input since it's useful to be able to push a block as quickly as possible.

Regarding compiler progress, I have a program which can find the most promising pairs of nearby objects to construct (and identify them, so that it knows which file in the data directory contains all of the relevant recipes). For instance, when you feed in the following input pattern (which is understood to be constructed from NW-bound gliders from the SE):

Code: Select all

x = 22, y = 27, rule = LifeHistory
2A$2A$20.2A$20.2A5$3.A$2.A.A$2.A.A$3.A6$17.2A$17.2A8$2.3A!
it responds seemingly instantaneously with the following six possibilities:

Code: Select all

xs4_33(2)
xp2_7__xs4_33
xs4_33__xs6_696
xp2_7
xs4_33
xs4_33
The three singletons are the blinker and two blocks on the lower-right envelope. It also thinks that the pair of blocks is promising, as is a blinker-block pair and a beehive-block pair (both of which involve the southmost block). This seems to agree with what you would intuitively imagine is the most constructible part of the constellation.

It enumerates the possibilities in O(n log n) time, where n is the number of objects in the input pattern (it doesn't, for example, try all possible pairs of objects).

Incidentally, I chose this particular 5-object constellation as an example input since it would complete the first slow-salvo Snark synthesis:

Code: Select all

x = 2159, y = 2144, rule = LifeHistory
57.2A$56.A.A$50.2A4.A$48.A2.A2.2A.4A$48.2A.A.A.A.A2.A$51.A.ABABAB$51.
A.AB2AB$52.AD.2B$52.D.D3B$51.D3.D3B6.2A$50.D2.3B2AB6.A$49.D3.3B2AB3.B
A.A$48.D2.7BD2B.B2A$47.D2.9BD3B$46.D2.11BD2B$45.D2.13BDB$44.D2.4B2.8B
.D$43.D2.4B5.6B2.D$42.D2.4B4.9B2.D$2A39.D2.4B5.2A4.4B2.D$2A38.D2.4B7.
A5.4B2.D$20.2A17.D2.4B5.3A7.4B2.D$20.2A16.D2.4B6.A10.4B2.D$40.4B19.4B
2.D$39.4B21.4B2.D$38.4B23.4B2.D$38.3B25.4B2.D$3.A34.2B27.4B2.D$2.A.A
33.B29.4B2.D$2.A.A64.4B2.D$3.A66.4B2.D$71.4B2.D$72.4B2.D$73.4B$74.4B$
75.4B$17.2A57.3B$17.2A58.2B$78.B6$26.D2.4B$2.3A22.D2.B2AB$28.D.2A3B$
29.D2.A3B$30.D2.4B$31.D2.4B$32.D2.4B$33.D2.4B$34.D2.4B$35.D2.4B$36.D
2.4B$37.D2.4B$38.D2.4B$39.D2.4B4.2A$40.D2.4B2.2A$51.A19$59.2A$58.2A$
60.A9$74.2A$74.A.A$74.A15$79.2A$79.A.A$79.A8$92.2A$91.2A$93.A29$127.
2A$127.A.A$127.A17$143.2A$143.A.A$143.A8$153.2A$153.A.A$153.A8$164.A$
163.2A$163.A.A$179.2A$179.A.A$179.A18$184.A$183.2A$183.A.A33$235.2A$
235.A.A$235.A63$278.2A$278.A.A$278.A27$302.2A$302.A.A$302.A21$331.A$
330.2A$330.A.A25$380.2A$352.3A25.A.A$352.A27.A$353.A13$396.2A$396.A.A
$396.A13$371.3A$371.A42.2A$372.A41.A.A$414.A16$400.A$399.2A$399.A.A
26$420.3A$420.A$421.A3$464.3A$464.A$465.A18$443.3A$443.A$444.A17$472.
A$471.2A$471.A.A20$524.3A$524.A$525.A$501.2A$500.2A$502.A47$594.A$
593.2A$593.A.A38$633.A$632.2A$632.A.A30$663.3A$663.A$664.A41$703.3A$
703.A$704.A62$763.3A$763.A$764.A47$823.3A$823.A$824.A59$871.3A$871.A$
872.A24$883.3A$883.A$884.A85$994.3A$994.A$995.A26$1023.3A$1023.A$
1024.A45$1063.3A$1063.A$1064.A23$1103.3A$1103.A$1104.A60$1143.3A$
1143.A$1144.A25$1183.3A$1183.A$1184.A15$1203.3A$1203.A$1204.A46$1242.
3A$1242.A$1243.A62$1302.3A$1302.A$1303.A50$1362.3A$1362.A$1363.A59$
1422.3A$1422.A$1423.A56$1482.3A$1482.A$1483.A59$1542.3A$1542.A$1543.A
62$1602.3A$1602.A$1603.A55$1662.3A$1662.A$1663.A13$1685.2A$1685.A.A$
1685.A12$1701.3A$1701.A$1702.A15$1721.3A$1721.A$1722.A21$1742.2A$
1741.2A$1743.A14$1746.2A$1746.A.A$1746.A27$1766.2A$1766.A.A$1766.A5$
1786.2A$1786.A.A$1786.A17$1806.2A$1806.A.A$1806.A28$1826.2A$1826.A.A$
1826.A32$1878.2A$1878.A.A$1878.A38$1910.2A$1910.A.A$1910.A38$1967.2A$
1967.A.A$1967.A38$2007.2A$2007.A.A$2007.A6$2015.2A$2015.A.A$2015.A6$
2023.2A$2023.A.A$2023.A22$2042.2A$2042.A.A$2042.A38$2073.A$2072.2A$
2072.A.A38$2116.2A$2116.A.A$2116.A38$2156.2A$2156.A.A$2156.A!
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Sample metapatterns made of Calcyman's metacells

Post by gameoflifemaniac » March 21st, 2017, 1:51 pm

So the 512 eaters decide if at a certain configuration of 8 neighbours a dead cell gets born or a live cell will survive or die, right? But to be sure, what's the order of those configurations?
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

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

Re: Sample metapatterns made of Calcyman's metacells

Post by dvgrn » March 21st, 2017, 2:27 pm

gameoflifemaniac wrote:So the 512 eaters decide if at a certain configuration of 8 neighbours a dead cell gets born or a live cell will survive or die, right? But to be sure, what's the order of those configurations?
0, 1, 2, 3, 4, 5, 6, 7, 8.

"8" is the center cell, so the 2^8th eater (counting from zero in the northwest) is the first of 256 eaters that encode what happens if the center cell is ON. The best way to understand the programming in detail is to look at a unit cell at T=0 programmed for a particular rule -- Life, let's say. Eater #0 is damaged, so a cell turns OFF when all cells around it are OFF. Eater #7 is undamaged, because 2^0 + 2^1 + 2^2 = 7, and a cell should turn ON when neighbors 0, 1, and 2 are ON.

You'll see that the same pattern holds for other combinations of neighbors -- every combination of three ON neighbors has an undamaged eater. And in the second half of the eater table, there are more undamaged eaters -- every possible way that you can add up 2^8 + 2^M + 2^N to get two ON neighbors and therefore survival.

Check the above link for some hopefully helpful diagrams. There's also rule integer on the LifeWiki.

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Sample metapatterns made of Calcyman's metacells

Post by gameoflifemaniac » July 2nd, 2017, 8:15 am

dvgrn wrote: EDIT: I did notice an exceptional case that might qualify as a bug. If you're trying to program the megacell to simulate a B0-no-S8 rule, you'll end up instead with the odd-generations rule that Golly uses to simulate B0-no-S8 rules. Since there's a different even-generations rule, the megafied pattern ends up not working right. Will fix that... relatively soon.
Ugh... you promised something...
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Sample metapatterns made of Calcyman's metacells

Post by gameoflifemaniac » July 7th, 2017, 3:46 pm

And you could update the megafier-universal script for Golly 3.0 to support MAP rules. I double posted because I wanted you to notice me.
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm

Re: Sample metapatterns made of Calcyman's metacells

Post by drc » July 7th, 2017, 4:11 pm

Please be patient, or try and update the stuff yourself.

User avatar
Saka
Posts: 3627
Joined: June 19th, 2015, 8:50 pm
Location: Indonesia
Contact:

Re: Sample metapatterns made of Calcyman's metacells

Post by Saka » July 7th, 2017, 9:04 pm

drc wrote:Please be patient, or try and update the stuff yourself.
It would be very nice to see this.

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

Re: Sample metapatterns made of Calcyman's metacells

Post by dvgrn » July 8th, 2017, 2:22 pm

Saka wrote:
drc wrote:Please be patient, or try and update the stuff yourself.
It would be very nice to see this.
I'd definitely like to get that script into Golly 3.0, if only to have an impressively weird and suboptimal way to show what rules with B0 are really doing. Golly is now hiding that so successfully that it's kind of confusing.

As far as I know, though, the script should work fine with half of all MAP rules already. Nobody has seen any problem with the 2^511 non-B0 MAP rules, have they?
dvgrn wrote:Will fix that... relatively soon.
I'm usually pretty careful to hedge my promises, and in this case "relatively soon" should be considered on a geologic timescale, as in, "relatively soon, [total] solar eclipses won't be possible".

Would anyone care to help out this project by working on some code to write out an .mc file directly for any selected pattern, based on an .mc file containing just a few megacells, enough to show all the required combinations of ON and OFF quarter-cells? This would make it possible for Golly to build much bigger patterns without running out of memory in the composition stage.

(Now I remember why I've been avoiding this...)

I think the thing to do would be to paste two OFF cells and two ON cells into an empty universe, like so:

Code: Select all

x = 32, y = 32, rule = B/S012345678
7b2o$6b4o$5bob2obo$4bo2b2o2bo$3bo3b2o3bo$2bo4b2o4bo$bo5b2o5bo$16o$17o$
bo5b2o5b4o$2bo4b2o4bob2obo$3bo3b2o3bo2b2o2bo$4bo2b2o2bo3b2o3bo$5bob2ob
o4b2o4bo$6b4o5b2o5bo$7b17o$7b18o$6b4o5b11o$5bob2obo4b7ob2obo$4bo2b2o2b
o3b6o2b2o2bo$3bo3b2o3bo2b5o3b2o3bo$2bo4b2o4bob4o4b2o4bo$bo5b2o5b4o5b2o
5bo$32o$32o$bo5b2o5bo2bo5b8o$2bo4b2o4bo4bo4b7o$3bo3b2o3bo6bo3b6o$4bo2b
2o2bo8bo2b5o$5bob2obo10bob4o$6b4o12b4o$7b2o14b2o!
Then write out an .mc file. It says in Golly Help (and I checked a while back and it's true) that the sub-hashtiles will line up correctly if the pattern is aligned to (0,1). That means that each of the eight tile types will be represented in the .mc file, with no hashtiles representing overlaps between partial tiles.

In other words, there will be a largest hashtile pointing to four smaller hashtiles, each of which points to four hashtiles the next size down. And it will be possible to see this in the actual file. Let's try it with a larger sample to make sure this works:

Code: Select all

x = 64, y = 64, rule = B/S012345678
15b2o$14b4o$13bob2obo$12bo2b2o2bo$11bo3b2o3bo$10bo4b2o4bo$9bo5b2o5bo$
8bo6b2o6bo$7bo7b2o7bo$6bo8b2o8bo$5bo9b2o9bo$4bo10b2o10bo$3bo11b2o11bo$
2bo12b2o12bo$bo13b2o13bo$32o$33o$bo13b2o13b4o$2bo12b2o12bob2obo$3bo11b
2o11bo2b2o2bo$4bo10b2o10bo3b2o3bo$5bo9b2o9bo4b2o4bo$6bo8b2o8bo5b2o5bo$
7bo7b2o7bo6b2o6bo$8bo6b2o6bo7b2o7bo$9bo5b2o5bo8b2o8bo$10bo4b2o4bo9b2o
9bo$11bo3b2o3bo10b2o10bo$12bo2b2o2bo11b2o11bo$13bob2obo12b2o12bo$14b4o
13b2o13bo$15b33o$15b34o$14b4o13b19o$13bob2obo12b15ob2obo$12bo2b2o2bo
11b14o2b2o2bo$11bo3b2o3bo10b13o3b2o3bo$10bo4b2o4bo9b12o4b2o4bo$9bo5b2o
5bo8b11o5b2o5bo$8bo6b2o6bo7b10o6b2o6bo$7bo7b2o7bo6b9o7b2o7bo$6bo8b2o8b
o5b8o8b2o8bo$5bo9b2o9bo4b7o9b2o9bo$4bo10b2o10bo3b6o10b2o10bo$3bo11b2o
11bo2b5o11b2o11bo$2bo12b2o12bob4o12b2o12bo$bo13b2o13b4o13b2o13bo$64o$
64o$bo13b2o13bo2bo13b16o$2bo12b2o12bo4bo12b15o$3bo11b2o11bo6bo11b14o$
4bo10b2o10bo8bo10b13o$5bo9b2o9bo10bo9b12o$6bo8b2o8bo12bo8b11o$7bo7b2o
7bo14bo7b10o$8bo6b2o6bo16bo6b9o$9bo5b2o5bo18bo5b8o$10bo4b2o4bo20bo4b7o
$11bo3b2o3bo22bo3b6o$12bo2b2o2bo24bo2b5o$13bob2obo26bob4o$14b4o28b4o$
15b2o30b2o!
Paste this into a new layer, then use Shift+S to move it (-32,-31) to put the upper left corner of the SE sub-hashtile at (0,1). Switch to the hashlife algo and save as an .mc file:

Code: Select all

[M2] (golly 3.0b1)
#R B/S012345678
.......*$......**$.....*.*$....*..*$...*...*$..*....*$.*.....*$*......*$
.......*$......*$.....*$....*$...*$..*$.*$********$
.......*$.......*$.......*$.......*$.......*$.......*$.......*$********$
4 0 1 2 3
*$**$*.*$*..*$*...*$*....*$*.....*$*......*$
*$*$*$*$*$*$*$********$
*$.*$..*$...*$....*$.....*$......*$********$
4 5 0 6 7
********$.*$..*$...*$....*$.....*$......*$.......*$
********$.......*$.......*$.......*$.......*$.......*$.......*$.......*$
*......*$.*.....*$..*....*$...*...*$....*..*$.....*.*$......**$.......*$
4 9 10 0 11
********$*$*$*$*$*$*$*$
********$......**$.....*.*$....*..*$...*...*$..*....*$.*.....*$*......*$
*......*$*.....*$*....*$*...*$*..*$*.*$**$********$
4 13 14 15 3
5 4 8 12 16
5 0 0 8 0
********$**$*.*$*..*$*...*$*....*$*.....*$*......*$
*......*$.*.....*$..*....*$...*...*$....*..*$.....*.*$......**$********$
4 19 10 6 20
********$......*$.....*$....*$...*$..*$.*$*$
*......*$*.....*$*....*$*...*$*..*$*.*$**$*$
4 13 22 23 0
5 4 21 12 24
********$********$********$********$********$********$********$********$
********$********$******.*$*****..*$****...*$***....*$**.....*$*......*$
********$*******$******$*****$****$***$**$********$
4 26 27 28 3
********$*******$******$*****$****$***$**$*$
4 26 30 30 0
5 29 8 12 31
6 17 18 25 32
Now comes the exciting part! We can use this .mc file to build any pattern we want that's made out of the level-4 pieces of this pattern. If we have a script write out the new .mc file directly instead of making Golly do it for us, then Golly never has to represent the entire huge pattern as a cell list at all, so it becomes possible for the script to megafy much larger patterns without any memory issues.

Look at the last lines of the above sample file. "6 17 18 25 32" is the only level-6 hashtile. It points to the four level-5 hashtiles, the ones that start with "5" -- lines 19, 20, 27, and 34 of the actual .mc file, thanks to the two header lines. The order is always NW, NE, SW, SE.

Each of those four level-5 lines points to four previous lines specifying its level-4 hashtiles, in the same order:

Code: Select all

5 4 8 12 16
5 0 0 8 0
5 4 21 12 24
5 29 8 12 31
There are only eight different hashtiles in the pattern at this level, so there's some duplication, but we can make a little table:

Code: Select all

x = 64, y = 64, rule = LifeHistory
15.2A$14.4A$13.A.2A.A$12.A2.2A2.A$11.A3.2A3.A$8.D.A4.2A4.A2.3D13.3D
13.3D$7.2DA5.2A5.AD3.D11.D3.D11.D3.D$6.D.D6.2A6.D3.D11.D2.2D11.D2.2D$
5.D.AD6.2A7.3D12.D.D.D11.D.D.D$5.5D5.2A6.D.A.D11.2D2.D11.2D2.D$5.A2.D
6.2A6.D2.AD11.D3.D11.D3.D$4.A3.D6.2A7.3DA12.3D13.3D$3.A11.2A11.A$2.A
12.2A12.A$.A13.2A13.A$32A$33A$.A13.2A13.4A$2.A12.2A12.A.2A.A$3.A11.2A
11.A2.2A2.A$4.A10.2A10.A3.2A3.A$4.DA3.3D3.2A3.D4.3D3.2A4.A2.3D13.3D$
3.2D.A.D3.D2.2A2.2D3.DA5.2A5.AD3.D11.D3.D$4.D2.A4.D2.2A3.D3.D6.2A6.D
3.D11.D2.2D$4.D3.A2.D3.2A3.D2.A4D3.2A7.3D12.D.D.D$4.D4.AD4.2A3.D.A.D
3.D2.2A6.D.A.D11.2D2.D$4.D4.DA4.2A3.DA2.D3.D2.2A6.D2.AD11.D3.D$3.3D2.
5D2.2A2.3D3.3D3.2A7.3DA12.3D$12.A2.2A2.A11.2A11.A$13.A.2A.A12.2A12.A$
14.4A13.2A13.A$15.33A$15.34A$14.4A13.19A$13.A.2A.A12.15A.2A.A$12.A2.
2A2.A11.14A2.2A2.A$11.A3.2A3.A10.13A3.2A3.A$8.D.A4.2A3.3D4.D3.4A3D3A
3D3.2A4.A2.3D$7.2DA5.2A2.D2.AD2.2D3.3AD3ADADA2.D2.2A5.AD3.D$6.D.D6.2A
6.D3.D3.7ADAD3.D2.2A6.D3.D$5.D.AD6.2A5.D.A2.D3.6AD2A.4D2.2A7.3D$5.5D
5.2A4.D3.A.D3.5AD2A5.D2.2A6.D.A.D$5.A2.D6.2A3.D5.AD3.4AD2A6.D2.2A6.D
2.AD$4.A3.D6.2A2.5D2.3D2.3A5D2.3D3.2A7.3DA$3.A11.2A11.A2.5A11.2A11.A$
2.A12.2A12.A.4A12.2A12.A$.A13.2A13.4A13.2A13.A$64A$64A$.A13.2A13.A2.A
13.16A$2.A12.2A12.A4.A12.15A$3.A11.2A11.A6.A11.14A$4.A10.2A10.A8.A10.
13A$4.DA3.3D3.2A3.3D3.A.D7.DA3.3D3.5A3D4AD$3.2D.A.D3.D2.2A2.D3.D.A.2D
6.2D.A.D3.D2.4AD3AD2A2D$4.D2.A4.D2.2A6.DA.D.D7.D2.A4.D2.8ADA2.D$4.D3.
A2.D3.2A5.DA.D2.D7.D3.A2.D3.6A2DA3.D$4.D4.AD4.2A4.DA2.5D6.D4.AD4.8AD
3.D$4.D4.DA4.2A3.DA6.D7.D4.DA4.4AD2A.D3.D$3.3D2.5D2.2A2.5D4.D6.3D2.5D
2.5A3D3.3D$12.A2.2A2.A24.A2.5A$13.A.2A.A26.A.4A$14.4A28.4A$15.2A30.2A!
#C [[ THUMBNAIL THUMBSIZE 2 ZOOM 8 HEIGHT 600 ]]
So then we can build any pattern we want, of any size, out of those level-4 hashtiles, just by starting with exactly the same macrocell file -- all but the last line, which we throw away and replace with whatever highest-level definition we want. Example: replace the mostly-empty NE level-5 hashtile with a copy of the NW tile, to get a modified level 6... and then have the final level 7 pattern be four copies of that newly-defined level 6 hashtile:

Code: Select all

[M2] (golly 3.0b1)
#R B/S012345678
.......*$......**$.....*.*$....*..*$...*...*$..*....*$.*.....*$*......*$
.......*$......*$.....*$....*$...*$..*$.*$********$
.......*$.......*$.......*$.......*$.......*$.......*$.......*$********$
4 0 1 2 3
*$**$*.*$*..*$*...*$*....*$*.....*$*......*$
*$*$*$*$*$*$*$********$
*$.*$..*$...*$....*$.....*$......*$********$
4 5 0 6 7
********$.*$..*$...*$....*$.....*$......*$.......*$
********$.......*$.......*$.......*$.......*$.......*$.......*$.......*$
*......*$.*.....*$..*....*$...*...*$....*..*$.....*.*$......**$.......*$
4 9 10 0 11
********$*$*$*$*$*$*$*$
********$......**$.....*.*$....*..*$...*...*$..*....*$.*.....*$*......*$
*......*$*.....*$*....*$*...*$*..*$*.*$**$********$
4 13 14 15 3
5 4 8 12 16
5 0 0 8 0
********$**$*.*$*..*$*...*$*....*$*.....*$*......*$
*......*$.*.....*$..*....*$...*...*$....*..*$.....*.*$......**$********$
4 19 10 6 20
********$......*$.....*$....*$...*$..*$.*$*$
*......*$*.....*$*....*$*...*$*..*$*.*$**$*$
4 13 22 23 0
5 4 21 12 24
********$********$********$********$********$********$********$********$
********$********$******.*$*****..*$****...*$***....*$**.....*$*......*$
********$*******$******$*****$****$***$**$********$
4 26 27 28 3
********$*******$******$*****$****$***$**$*$
4 26 30 30 0
5 29 8 12 31
6 17 17 25 32
7 33 33 33 33

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

Re: Sample metapatterns made of Calcyman's metacells

Post by dvgrn » July 8th, 2017, 6:21 pm

One minor thing to worry about: Golly doesn't seem to have problems if sub-hashtiles are defined that are never actually used by higher-level hashtiles. However, it will have fits if you try to define another hashtile that's made out of the same four pieces as a hashtile that's already been defined. So we'll have to keep track of the four level-5 hashtiles in the sample pattern, and re-use those numbers when that grouping shows up in a larger pattern that we're building.

-- Either that, or we can deliberately break the sample pattern as we're setting it up, so that we know that none of the level-5 hashtiles will ever show up in the full pattern. I kind of like that idea, actually. The starting .mc could be something analogous to this, but with real quarter-megacells and quarter-megacell pairs standing in for these 16x16 tiles:

Code: Select all

x = 64, y = 32, rule = LifeHistory
15.49A$14.3A13.33A$13.A.2A12.A.15A.15A$12.A2.2A11.A2.14A2.14A$11.A3.
2A10.A3.13A3.13A$10.A4.2A9.A4.12A4.12A$9.A5.2A8.A5.11A5.11A$8.A6.2A7.
A6.10A6.10A$7.A7.2A6.A7.9A7.9A$6.A8.2A5.A8.8A8.8A$5.A9.2A4.A9.7A9.7A$
4.A10.2A3.A10.6A10.6A$3.A11.2A2.A11.5A11.5A$2.A12.2A.A12.4A12.4A$.A
13.3A13.3A13.3A$49A$49A$A13.A2.A13.3A13.3A$A12.A4.A12.2A.A12.2A.A$A
11.A6.A11.2A2.A11.2A2.A$A10.A8.A10.2A3.A10.2A3.A$A9.A10.A9.2A4.A9.2A
4.A$A8.A12.A8.2A5.A8.2A5.A$A7.A14.A7.2A6.A7.2A6.A$A6.A16.A6.2A7.A6.2A
7.A$A5.A18.A5.2A8.A5.2A8.A$A4.A20.A4.2A9.A4.2A9.A$A3.A22.A3.2A10.A3.
2A10.A$A2.A24.A2.2A11.A2.2A11.A$A.A26.A.2A12.A.2A12.A$2A28.3A13.3A13.
A$A30.33A!
#C [[ ZOOM 8 THUMBNAIL THUMBSIZE 2 ]]
That would mean no duplication -- each of the eight required pieces of any large megafied pattern will show up exactly once in the initial .mc file, with zeros for the NW and NE hashtiles at the highest level. And there'd be no danger that either of those two quarter-tiles would appear in an actual megafied pattern, which makes it a little simpler to write out the custom .mc based on these pieces:

Ruleloader-algo format sample macrocell file --

Code: Select all

[M2] (golly 3.0b1)
#R B3/S23
1 0 1 1 1
1 0 1 1 0
1 0 1 0 1
2 0 1 2 3
2 0 2 2 0
2 0 3 0 3
3 0 4 5 6
1 0 0 1 1
2 0 2 1 8
2 0 0 8 8
3 0 5 9 10
2 0 3 8 1
3 0 6 10 12
4 0 7 11 13
1 1 1 1 0
1 1 1 0 0
1 1 0 1 0
2 15 16 17 0
2 16 16 0 0
2 17 0 17 0
3 18 19 20 0
1 1 1 1 1
2 16 22 2 3
3 19 23 5 6
2 17 2 22 8
3 20 5 25 10
4 21 24 26 13
2 16 15 2 0
3 19 28 5 0
2 17 2 15 0
3 20 5 30 0
4 21 29 31 0
1 1 1 0 1
1 1 0 0 1
2 33 16 0 34
2 34 0 0 34
3 35 19 0 36
2 16 33 0 3
3 19 38 0 6
2 34 3 0 33
3 36 6 0 40
4 37 39 0 41
5 14 27 32 42
2 22 22 22 22
3 44 44 44 44
2 22 22 15 3
2 22 15 15 0
3 44 46 47 6
2 22 15 22 8
3 44 47 49 10
4 45 48 50 13
3 44 47 47 0
4 45 52 52 0
2 22 16 17 34
3 54 19 20 36
1 1 0 1 1
2 17 0 56 8
3 20 0 57 10
2 34 3 8 22
3 36 6 10 59
4 55 39 58 60
2 56 0 17 34
3 62 0 20 36
2 34 0 8 56
3 36 0 10 64
4 63 0 58 65
5 51 53 61 66
6 0 0 43 67
If you switch Golly to the Hashlife algo instead of RuleLoader, it will save the same file in this form:

Hashlife-format sample macrocell file --

Code: Select all

[M2] (golly 3.0b1)
#R B3/S23
.......*$......**$.....*.*$....*..*$...*...*$..*....*$.*.....*$*......*$
.......*$......*$.....*$....*$...*$..*$.*$********$
.......*$.......*$.......*$.......*$.......*$.......*$.......*$********$
4 0 1 2 3
********$*$*$*$*$*$*$*$
********$......**$.....*.*$....*..*$...*...*$..*....*$.*.....*$*......*$
*......*$*.....*$*....*$*...*$*..*$*.*$**$********$
4 5 6 7 3
********$......*$.....*$....*$...*$..*$.*$*$
*......*$*.....*$*....*$*...*$*..*$*.*$**$*$
4 5 9 10 0
********$.*$..*$...*$....*$.....*$......*$.......*$
********$.......*$.......*$.......*$.......*$.......*$.......*$.......*$
*......*$.*.....*$..*....*$...*...*$....*..*$.....*.*$......**$.......*$
4 12 13 0 14
5 4 8 11 15
********$********$********$********$********$********$********$********$
********$********$******.*$*****..*$****...*$***....*$**.....*$*......*$
********$*******$******$*****$****$***$**$********$
4 17 18 19 3
********$*******$******$*****$****$***$**$*$
4 17 21 21 0
********$**$*.*$*..*$*...*$*....*$*.....*$*......*$
*$*$*$*$*$*$*$********$
*......*$.*.....*$..*....*$...*...*$....*..*$.....*.*$......**$********$
4 23 13 24 25
*$**$*.*$*..*$*...*$*....*$*.....*$*......*$
*$.*$..*$...*$....*$.....*$......*$********$
4 27 0 24 28
5 20 22 26 29
6 0 0 16 30
To understand macrocell files well it would be good to get comfortable with these two forms. They're completely equivalent, but in Hashlife macrocell format, the lowest-level "leaf nodes" are 8x8 tiles, stored as lines of [*.$]s. RuleLoader allows for more than two states, so in that case Golly starts with single cells and lists four state numbers -- the NW, NE, SW, and SE corner states -- for each level-1 2x2 hashtile.

-- No, none of this has anything to do with fixing the B0 problem, but it's one of two other items needed to get the universal megafier script in full working order. The other is to define the ON and OFF megacells in terms of their smaller component mechanisms, so that the whole script will be on the order of 50K and won't need a separate OFF cell pattern file.

RakeGuy1246
Posts: 56
Joined: June 26th, 2020, 6:02 pm

Re: Sample metapatterns made of Calcyman's metacells

Post by RakeGuy1246 » February 11th, 2022, 2:47 pm

calcyman wrote:
February 1st, 2017, 7:28 am
That's believable, yes; Golly scripts for assembling metapatterns build them as a flat (uncompressed) representation before converting it into a compressed quadtree. If you want to construct larger metapatterns (such as the meta-meta-blinker I posted), you need to build the pattern in something other than Golly.
Where is this meta-meta-blinker, exactly?

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

Re: Sample metapatterns made of Calcyman's metacells

Post by GUYTU6J » February 11th, 2022, 9:21 pm

RakeGuy1246 wrote:
February 11th, 2022, 2:47 pm
calcyman wrote:
February 1st, 2017, 7:28 am
That's believable, yes; Golly scripts for assembling metapatterns build them as a flat (uncompressed) representation before converting it into a compressed quadtree. If you want to construct larger metapatterns (such as the meta-meta-blinker I posted), you need to build the pattern in something other than Golly.
Where is this meta-meta-blinker, exactly?
Why not just use the integrated search function to find the thread? It is an unrelated, older mechanism.

RakeGuy1246
Posts: 56
Joined: June 26th, 2020, 6:02 pm

Re: Sample metapatterns made of Calcyman's metacells

Post by RakeGuy1246 » July 3rd, 2022, 4:12 pm

GUYTU6J wrote:
February 11th, 2022, 9:21 pm
RakeGuy1246 wrote:
February 11th, 2022, 2:47 pm
calcyman wrote:
February 1st, 2017, 7:28 am
That's believable, yes; Golly scripts for assembling metapatterns build them as a flat (uncompressed) representation before converting it into a compressed quadtree. If you want to construct larger metapatterns (such as the meta-meta-blinker I posted), you need to build the pattern in something other than Golly.
Where is this meta-meta-blinker, exactly?
Why not just use the integrated search function to find the thread? It is an unrelated, older mechanism.
I meant with calcyman metacells. That should've been blatantly obvious.

Post Reply