Home  •  LifeWiki  •  Forums  •  Download Golly

## Sample metapatterns made of Calcyman's metacells

For discussion of specific patterns or specific families of patterns, both newly-discovered and well-known.

### Re: Wiki article

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?
One big dirty Oro. Yeeeeeeeeee...

gameoflifemaniac

Posts: 546
Joined: January 22nd, 2017, 11:17 am
Location: Poland

### Re: Sample metapatterns made of Calcyman's metacells

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!

calcyman

Posts: 1471
Joined: June 1st, 2009, 4:32 pm

### Re: Wiki article

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]

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

### Re: Sample metapatterns made of Calcyman's metacells

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
One big dirty Oro. Yeeeeeeeeee...

gameoflifemaniac

Posts: 546
Joined: January 22nd, 2017, 11:17 am
Location: Poland

### Re: Sample metapatterns made of Calcyman's metacells

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?
One big dirty Oro. Yeeeeeeeeee...

gameoflifemaniac

Posts: 546
Joined: January 22nd, 2017, 11:17 am
Location: Poland

### Re: Sample metapatterns made of Calcyman's metacells

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:

`x = 513, y = 518, rule = B3/S232o\$2o3\$2o\$obo\$o13\$12b2o\$12bobo\$12bo8\$36bo\$35b2o\$35bobo13\$42b2o\$42bobo\$42bo16\$46bo\$45b2o\$45bobo11bo\$58b2o\$58bobo39\$107b2o\$107bobo\$107bo9\$119b2o\$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\$333bobo12\$351b2o\$351bobo\$351bo26\$365bo\$364b2o\$364bobo16\$381bo\$380b2o\$380bobo11\$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!

calcyman

Posts: 1471
Joined: June 1st, 2009, 4:32 pm

### Re: Sample metapatterns made of Calcyman's metacells

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

blah

Posts: 194
Joined: April 9th, 2016, 7:22 pm

### Re: Sample metapatterns made of Calcyman's metacells

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!

calcyman

Posts: 1471
Joined: June 1st, 2009, 4:32 pm

### Re: Sample metapatterns made of Calcyman's metacells

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!

dvgrn
Moderator

Posts: 4354
Joined: May 17th, 2009, 11:00 pm

### Re: Sample metapatterns made of Calcyman's metacells

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

`x = 22, y = 27, rule = LifeHistory2A\$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:

`xs4_33(2)xp2_7__xs4_33xs4_33__xs6_696xp2_7xs4_33xs4_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:

`x = 2159, y = 2144, rule = LifeHistory57.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.BA.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.4B2.D\$39.4B21.4B2.D\$38.4B23.4B2.D\$38.3B25.4B2.D\$3.A34.2B27.4B2.D\$2.A.A33.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.D2.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.A26\$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.A62\$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!

calcyman

Posts: 1471
Joined: June 1st, 2009, 4:32 pm

### Re: Sample metapatterns made of Calcyman's metacells

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?
One big dirty Oro. Yeeeeeeeeee...

gameoflifemaniac

Posts: 546
Joined: January 22nd, 2017, 11:17 am
Location: Poland

### Re: Sample metapatterns made of Calcyman's metacells

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.

dvgrn
Moderator

Posts: 4354
Joined: May 17th, 2009, 11:00 pm

### Re: Sample metapatterns made of Calcyman's metacells

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...
One big dirty Oro. Yeeeeeeeeee...

gameoflifemaniac

Posts: 546
Joined: January 22nd, 2017, 11:17 am
Location: Poland

### Re: Sample metapatterns made of Calcyman's metacells

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.
One big dirty Oro. Yeeeeeeeeee...

gameoflifemaniac

Posts: 546
Joined: January 22nd, 2017, 11:17 am
Location: Poland

### Re: Sample metapatterns made of Calcyman's metacells

Please be patient, or try and update the stuff yourself.
This post was brought to you by the letter D, for dishes that Andrew J. Wade won't do. (Also Daniel, which happens to be me.)
Current rule interest: B2ce3-ir4a5y/S2-c3-y

drc

Posts: 1665
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

### Re: Sample metapatterns made of Calcyman's metacells

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

It would be very nice to see this.
Everyone, please stop posting B/S about CA
`x = 17, y = 10, rule = B3/S23b2ob2obo5b2o\$11b4obo\$2bob3o2bo2b3o\$bo3b2o4b2o\$o2bo2bob2o3b4o\$bob2obo5bo2b2o\$2b2o4bobo2b3o\$bo3b5ob2obobo\$2bo5bob2o\$4bob2o2bobobo!`

(Check gen 2)

Saka

Posts: 2390
Joined: June 19th, 2015, 8:50 pm
Location: In the kingdom of Sultan Hamengkubuwono X

### Re: Sample metapatterns made of Calcyman's metacells

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:

`x = 32, y = 32, rule = B/S0123456787b2o\$6b4o\$5bob2obo\$4bo2b2o2bo\$3bo3b2o3bo\$2bo4b2o4bo\$bo5b2o5bo\$16o\$17o\$bo5b2o5b4o\$2bo4b2o4bob2obo\$3bo3b2o3bo2b2o2bo\$4bo2b2o2bo3b2o3bo\$5bob2obo4b2o4bo\$6b4o5b2o5bo\$7b17o\$7b18o\$6b4o5b11o\$5bob2obo4b7ob2obo\$4bo2b2o2bo3b6o2b2o2bo\$3bo3b2o3bo2b5o3b2o3bo\$2bo4b2o4bob4o4b2o4bo\$bo5b2o5b4o5b2o5bo\$32o\$32o\$bo5b2o5bo2bo5b8o\$2bo4b2o4bo4bo4b7o\$3bo3b2o3bo6bo3b6o\$4bo2b2o2bo8bo2b5o\$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:

`x = 64, y = 64, rule = B/S01234567815b2o\$14b4o\$13bob2obo\$12bo2b2o2bo\$11bo3b2o3bo\$10bo4b2o4bo\$9bo5b2o5bo\$8bo6b2o6bo\$7bo7b2o7bo\$6bo8b2o8bo\$5bo9b2o9bo\$4bo10b2o10bo\$3bo11b2o11bo\$2bo12b2o12bo\$bo13b2o13bo\$32o\$33o\$bo13b2o13b4o\$2bo12b2o12bob2obo\$3bo11b2o11bo2b2o2bo\$4bo10b2o10bo3b2o3bo\$5bo9b2o9bo4b2o4bo\$6bo8b2o8bo5b2o5bo\$7bo7b2o7bo6b2o6bo\$8bo6b2o6bo7b2o7bo\$9bo5b2o5bo8b2o8bo\$10bo4b2o4bo9b2o9bo\$11bo3b2o3bo10b2o10bo\$12bo2b2o2bo11b2o11bo\$13bob2obo12b2o12bo\$14b4o13b2o13bo\$15b33o\$15b34o\$14b4o13b19o\$13bob2obo12b15ob2obo\$12bo2b2o2bo11b14o2b2o2bo\$11bo3b2o3bo10b13o3b2o3bo\$10bo4b2o4bo9b12o4b2o4bo\$9bo5b2o5bo8b11o5b2o5bo\$8bo6b2o6bo7b10o6b2o6bo\$7bo7b2o7bo6b9o7b2o7bo\$6bo8b2o8bo5b8o8b2o8bo\$5bo9b2o9bo4b7o9b2o9bo\$4bo10b2o10bo3b6o10b2o10bo\$3bo11b2o11bo2b5o11b2o11bo\$2bo12b2o12bob4o12b2o12bo\$bo13b2o13b4o13b2o13bo\$64o\$64o\$bo13b2o13bo2bo13b16o\$2bo12b2o12bo4bo12b15o\$3bo11b2o11bo6bo11b14o\$4bo10b2o10bo8bo10b13o\$5bo9b2o9bo10bo9b12o\$6bo8b2o8bo12bo8b11o\$7bo7b2o7bo14bo7b10o\$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:

`[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 35 4 8 12 165 0 0 8 0********\$**\$*.*\$*..*\$*...*\$*....*\$*.....*\$*......*\$*......*\$.*.....*\$..*....*\$...*...*\$....*..*\$.....*.*\$......**\$********\$4 19 10 6 20********\$......*\$.....*\$....*\$...*\$..*\$.*\$*\$*......*\$*.....*\$*....*\$*...*\$*..*\$*.*\$**\$*\$4 13 22 23 05 4 21 12 24********\$********\$********\$********\$********\$********\$********\$********\$********\$********\$******.*\$*****..*\$****...*\$***....*\$**.....*\$*......*\$********\$*******\$******\$*****\$****\$***\$**\$********\$4 26 27 28 3********\$*******\$******\$*****\$****\$***\$**\$*\$4 26 30 30 05 29 8 12 316 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:

`5 4 8 12 165 0 0 8 05 4 21 12 245 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 = LifeHistory15.2A\$14.4A\$13.A.2A.A\$12.A2.2A2.A\$11.A3.2A3.A\$8.D.A4.2A4.A2.3D13.3D13.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.D6.2A6.D2.AD11.D3.D11.D3.D\$4.A3.D6.2A7.3DA12.3D13.3D\$3.A11.2A11.A\$2.A12.2A12.A\$.A13.2A13.A\$32A\$33A\$.A13.2A13.4A\$2.A12.2A12.A.2A.A\$3.A11.2A11.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.D3.D11.D2.2D\$4.D3.A2.D3.2A3.D2.A4D3.2A7.3D12.D.D.D\$4.D4.AD4.2A3.D.A.D3.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.4A3D3A3D3.2A4.A2.3D\$7.2DA5.2A2.D2.AD2.2D3.3AD3ADADA2.D2.2A5.AD3.D\$6.D.D6.2A6.D3.D3.7ADAD3.D2.2A6.D3.D\$5.D.AD6.2A5.D.A2.D3.6AD2A.4D2.2A7.3D\$5.5D5.2A4.D3.A.D3.5AD2A5.D2.2A6.D.A.D\$5.A2.D6.2A3.D5.AD3.4AD2A6.D2.2A6.D2.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.A13.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.2D6.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.8AD3.D\$4.D4.DA4.2A3.DA6.D7.D4.DA4.4AD2A.D3.D\$3.3D2.5D2.2A2.5D4.D6.3D2.5D2.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:

`[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 35 4 8 12 165 0 0 8 0********\$**\$*.*\$*..*\$*...*\$*....*\$*.....*\$*......*\$*......*\$.*.....*\$..*....*\$...*...*\$....*..*\$.....*.*\$......**\$********\$4 19 10 6 20********\$......*\$.....*\$....*\$...*\$..*\$.*\$*\$*......*\$*.....*\$*....*\$*...*\$*..*\$*.*\$**\$*\$4 13 22 23 05 4 21 12 24********\$********\$********\$********\$********\$********\$********\$********\$********\$********\$******.*\$*****..*\$****...*\$***....*\$**.....*\$*......*\$********\$*******\$******\$*****\$****\$***\$**\$********\$4 26 27 28 3********\$*******\$******\$*****\$****\$***\$**\$*\$4 26 30 30 05 29 8 12 316 17 17 25 327 33 33 33 33`

dvgrn
Moderator

Posts: 4354
Joined: May 17th, 2009, 11:00 pm

### Re: Sample metapatterns made of Calcyman's metacells

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 = LifeHistory15.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\$.A13.3A13.3A13.3A\$49A\$49A\$A13.A2.A13.3A13.3A\$A12.A4.A12.2A.A12.2A.A\$A11.A6.A11.2A2.A11.2A2.A\$A10.A8.A10.2A3.A10.2A3.A\$A9.A10.A9.2A4.A9.2A4.A\$A8.A12.A8.2A5.A8.2A5.A\$A7.A14.A7.2A6.A7.2A6.A\$A6.A16.A6.2A7.A6.2A7.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 --
`[M2] (golly 3.0b1)#R B3/S231 0 1 1 11 0 1 1 01 0 1 0 12 0 1 2 32 0 2 2 02 0 3 0 33 0 4 5 61 0 0 1 12 0 2 1 82 0 0 8 83 0 5 9 102 0 3 8 13 0 6 10 124 0 7 11 131 1 1 1 01 1 1 0 01 1 0 1 02 15 16 17 02 16 16 0 02 17 0 17 03 18 19 20 01 1 1 1 12 16 22 2 33 19 23 5 62 17 2 22 83 20 5 25 104 21 24 26 132 16 15 2 03 19 28 5 02 17 2 15 03 20 5 30 04 21 29 31 01 1 1 0 11 1 0 0 12 33 16 0 342 34 0 0 343 35 19 0 362 16 33 0 33 19 38 0 62 34 3 0 333 36 6 0 404 37 39 0 415 14 27 32 422 22 22 22 223 44 44 44 442 22 22 15 32 22 15 15 03 44 46 47 62 22 15 22 83 44 47 49 104 45 48 50 133 44 47 47 04 45 52 52 02 22 16 17 343 54 19 20 361 1 0 1 12 17 0 56 83 20 0 57 102 34 3 8 223 36 6 10 594 55 39 58 602 56 0 17 343 62 0 20 362 34 0 8 563 36 0 10 644 63 0 58 655 51 53 61 666 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 --
`[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 145 4 8 11 15********\$********\$********\$********\$********\$********\$********\$********\$********\$********\$******.*\$*****..*\$****...*\$***....*\$**.....*\$*......*\$********\$*******\$******\$*****\$****\$***\$**\$********\$4 17 18 19 3********\$*******\$******\$*****\$****\$***\$**\$*\$4 17 21 21 0********\$**\$*.*\$*..*\$*...*\$*....*\$*.....*\$*......*\$*\$*\$*\$*\$*\$*\$*\$********\$*......*\$.*.....*\$..*....*\$...*...*\$....*..*\$.....*.*\$......**\$********\$4 23 13 24 25*\$**\$*.*\$*..*\$*...*\$*....*\$*.....*\$*......*\$*\$.*\$..*\$...*\$....*\$.....*\$......*\$********\$4 27 0 24 285 20 22 26 296 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.

dvgrn
Moderator

Posts: 4354
Joined: May 17th, 2009, 11:00 pm