How about a fully spartan demonoid?

For discussion of specific patterns or specific families of patterns in Conway's Game of Life, both newly-discovered and well-known.
Post Reply
googoIpIex
Posts: 298
Joined: February 28th, 2019, 4:49 pm
Location: Sqrt(-1)

How about a fully spartan demonoid?

Post by googoIpIex » December 12th, 2021, 2:41 am

The Topic of a Silver-reflector based demonoid has come up before, and it is clear that if we coordinate effort it is possible to make this a reality. all we really need are elbow operations for overclocked silver reflectors.

My Design for each side:

Code: Select all

x = 413, y = 639, rule = LifeHistory
44$187.A$186.A.A$186.2A12$188.2A$187.A2.A$187.A.A$188.A7$186.2A15.2A$
185.B2AB14.2A$186.2B6.B$187.2B4.3B$186.14B$186.14B$177.B5.17B$167.2A
7.25B$167.2A5.29B$172.B.30B$171.2A32B$171.2A33B26.A$172.28B3.4B24.A.A
$172.3B4.B.16B7.4B23.2A$183.10B.2B9.4B$184.9B13.4B$171.2A8.11B15.4B$
171.2A7.12B16.4B4.2A$180.12B17.4B3.2A$180.11B19.4B$180.8B.4B18.4B$
180.7B4.2A19.4B$180.7B4.A21.4B$180.6B6.3A19.4B$172.2A5.7B8.A20.4B$
172.2A4.8B12.A17.4B$177.8B12.A.A17.4B$176.9B12.2A19.4B16.4B$160.A14.
4B.6B33.4B14.3B$159.A.A12.4B.7B34.2A2B12.4B$160.2A11.4B2.6B35.2A3B10.
4B$172.4B3.6B37.4B8.4B$171.4B4.6B38.4B6.4B$170.4B4.8B38.4B4.4B$169.4B
6.8B37.2A3B2.4B$168.4B6.9B16.A20.2A8B4.A$167.4B7.9B16.3A21.6B5.3A$
166.4B8.10B18.A21.4B9.A$165.4B9.5B2A3B17.2A20.6B7.2A$164.4B10.5B2A4B
3.2A11.4B17.8B6.4B6.2A$163.4B11.11B3.A14.3B15.4B2.4B7.2B6.A$162.4B12.
12BA.A13.4B14.4B4.4B4.5B2.BA.A$161.4B15.8B2.2A4.2A8.5B12.4B6.4B.B.2B
2AB2.B2A$160.4B10.2A4.7B9.A8.6B11.4B.3B.2B.7BA2BA4B$159.4B12.A4.6B7.B
A.A8.8B2.27B2A4B$158.4B13.A.AB.6B3.3B.B2A8.26B2A16B24.2A$157.4B15.2AB
.14B11.25B2A14B26.A.A$156.4B18.16B12.7B.32B27.A$155.4B20.14B12.42B$
154.4B20.16B11.19B2.2B3.2B6.9B$153.4B21.18B8.17B19.9B$152.4B14.A8.20B
2.2B.15B21.5B.4B$151.4B14.A.A8.38B12.2A9.3B3.4B$150.4B16.A10.7B.20B.
8B12.2A7.7B2.4B.2A$149.4B28.6B2.16B2A2B3.8B19.2A.B.2A3.4BA$148.4B28.
6B3.16B2A2B5.B3.2A20.A3.A5.4B3A$147.4B23.A5.4B6.18B10.A18.3A5.3A3.4B.
A$146.4B17.2A4.A.A4.2B2AB12.4B.3B.B12.3A15.A9.A4.4B6.2A$145.4B18.2A4.
2A3.2AB.2A14.3B20.A31.4B4.A2.A$144.4B29.A.AB18.4B46.2A2.2A3B3.A2.A$
143.4B30.A23.2A9.A36.2A2.2A4B3.2A$142.4B30.2A23.A9.A.A42.4B$141.4B57.
3A6.A.A43.4B$140.4B60.A7.A45.4B$139.4B116.4B$138.4B60.A57.4B$137.4B
60.A.A57.4B$136.4B61.2A31.2A2.2A22.4B$135.4B95.2A2.2A23.4B$134.4B86.
2A38.4B$133.4B87.A.A38.4B$132.4B89.A40.4B$131.4B132.4B$130.4B134.4B$
129.4B136.4B$128.4B138.4B$127.4B140.4B$126.4B111.2A29.4B$125.4B112.2A
30.4B$124.4B146.4B$123.4B148.4B$122.4B128.2A20.4B$121.4B129.A.A20.4B$
120.4B131.A.A20.4B$119.4B133.A22.4B$118.4B158.4B92.B$117.4B160.4B$
116.4B162.4B$115.4B164.4B$114.4B129.2A35.4B$113.4B129.A2.A35.4B$112.
4B131.A.A36.4B$111.4B133.A38.4B$110.4B174.4B$109.4B121.2A53.4B$108.4B
122.2A54.4B$107.4B180.4B$106.4B182.4B$105.4B184.4B$104.4B122.2A62.4B$
103.4B123.2A63.4B$102.4B190.4B$101.4B192.4B$100.4B194.4B$99.4B196.4B$
98.4B198.4B$97.4B200.4B$96.4B202.4B$95.4B204.4B$94.4B206.4B$93.4B208.
4B$92.4B210.4B$91.4B212.4B$90.4B214.4B$89.4B216.4B$88.4B218.4B$87.4B
220.4B$86.4B222.4B$85.4B224.4B$84.4B226.4B$83.4B228.4B$82.4B230.4B$
81.4B232.4B$80.4B234.4B$79.4B20.A215.4B$78.4B20.A.A215.4B$77.4B20.A.A
217.4B$76.4B21.2A219.4B$75.4B244.4B$74.4B246.4B$74.3B248.4B$74.2B250.
4B$74.B35.2A215.4B$109.A2.A215.4B$109.A.A217.4B$110.A219.4B$331.4B$
332.4B$333.4B$334.4B14.A$335.4B12.A.A$336.4B11.2A$337.4B$338.4B$339.
4B$340.4B$114.2A225.4B$114.2A207.2A17.4B27.2A$323.2A18.4B26.2A$329.A
14.4B$119.2A207.A.A14.4B$119.2A208.A16.4B14.2A4.2A$347.4B5.2A6.2A2.2B
2AB$323.2A23.4B4.2A10.4B$323.A.A12.A10.4B15.6B$324.A11.3A11.4B15.5B$
320.A14.A15.4B14.6B$320.3A12.2A15.4B13.7B$323.A7.2B.3B3.7B.B4.4B12.6B
$322.2A6.5B5.13B.4B10.7B$322.5B2.36B4.6B$324.42B2.7B$323.2A41B2.7B$
323.2A17B2A22B.9B$324.B.16B2A32B$326.23B3.2B2.20B4.B$327.9B2.10B11.
19B.B2A21.2A$328.8B3.6B16.19B2A7.2A12.A.A$329.7B4.3B19.17B.B7.A2.A12.
A$326.11B3.B20.17B11.A.A$325.12B2.2A20.17B12.A$325.12B2.A19.2AB.15B$
325.11B4.3A15.A.AB4.12B$325.8B.4B4.A15.A9.11B$325.7B4.2A19.2A8.13B$
325.7B4.A30.12B$325.6B6.3A28.10B$324.7B8.A14.2A13.9B$323.8B23.A.A12.
9B$322.8B25.A13.9B$322.8B40.5B$314.2A4.2AB2.6B39.4B$314.A.A2.A.AB.7B
39.4B$315.A3.A4.6B15.2A22.4B7.2A$318.2A4.8B4.B8.A22.4B8.2A$325.B2A6B.
4B3.BA.A21.4B$324.2B2A13B.B2A21.4B$325.18B22.4B$326.17B21.4B$329.13B
21.4B$328.12B22.4B$319.2A7.10B23.4B$318.A2.A5.11B22.4B$319.2A6.7B.2B
22.4B$326.11B21.4B$327.11B19.4B$327.11B18.4B$327.11B17.4B$325.2AB2.8B
16.4B$324.A.AB3.7B15.4B$324.A6.7B13.2A3B$323.2A7.6B13.2A2B$332.7B11.
4B$332.8B9.4B$311.2A20.8B5.2A4B$310.A.A20.9B4.2A3B$311.A20.6B.4B3.4B$
332.7B.4B.4B$333.6B2.7B$333.6B3.5B$328.2A3.2B2AB4.5B$328.2A2.3B2A2B2.
7B20.2A$332.7B.4B.4B19.A.A12.A$333.5B.4B3.4B19.A12.A.A$313.2A18.9B5.
4B31.2A$313.2A18.8B7.4B$333.7B9.4B$324.2A7.6B11.4B$313.2A10.A7.7B5.2A
4.4B$313.2A10.A.AB3.7B6.A6.3B$326.2AB.11B.BA.A8.B$303.2A23.10BA2B.B2A
9.B$303.2A22.10BABA3B$328.9BABA3B$326.2AB.8BA2B$325.A.AB2.8B21.2A$
325.A4.4B2.3B21.A.A$324.2A3.4B3.5B21.A$328.4B6.B2A21.2A$321.2A4.4B8.A
$321.2A3.4B10.3A$325.4B13.A$324.4B$321.2A4B2A$321.2A3BA.A$321.4B.A$
320.4B.2A$319.4B$318.4B$317.2A.B$316.A.A$315.B2.A3.2A$314.4B3.A2.A$
313.4B4.A2.A$312.4B6.2A$313.2B7$335.2A$334.A.A$335.A84$218.3A$217.B2.
A$216.2B.A$215.4B$214.4B$214.3B$215.B77$135.2A$134.A.A$133.B2.A$132.
4B$131.4B$130.4B$131.2B43$86.3A$88.A$87.A!

woomy on a vroomy

User avatar
Entity Valkyrie 2
Posts: 2052
Joined: February 26th, 2019, 7:13 pm
Contact:

Re: How about a fully spartan demonoid?

Post by Entity Valkyrie 2 » December 12th, 2021, 2:49 am

Wait... does "fully spartan" mean "no eater 2s, snarks, etc."?
Bx222 IS MY WORST ENEMY.

HyperConway — explore cellular automata on HyperRogue's hyperbolic tiling

Creator of the rule StateInvestigator
Please click here for my own pages (and oscillator stamp collections)

googoIpIex
Posts: 298
Joined: February 28th, 2019, 4:49 pm
Location: Sqrt(-1)

Re: How about a fully spartan demonoid?

Post by googoIpIex » December 12th, 2021, 3:05 am

In this specific context yes, but spartan nowadays means more like "can be constructable by slmake"
woomy on a vroomy

User avatar
Pavgran
Posts: 233
Joined: June 12th, 2019, 12:14 pm

Re: How about a fully spartan demonoid?

Post by Pavgran » December 12th, 2021, 5:05 am

Hmm. It looks like the gliders can come in pairs where the minimum separation within pair is 93 and the separation between pairs has to be carefully adjusted to allow overclocking. (The separation within pair can be 92 but that leaves only one option for the next pair's parity). So it means that most of the current single-channel recipes can be used with a little adjustment. (EDIT2: or not, actually. Things are more complicated than that.)

EDIT:
It also can be made into Speed Demonoid, I think, if you allow temporary non-spartan constructions.

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

Re: How about a fully spartan demonoid?

Post by dvgrn » December 12th, 2021, 10:04 am

Pavgran wrote:
December 12th, 2021, 5:05 am
... most of the current single-channel recipes can be used with a little adjustment. (EDIT2: or not, actually. Things are more complicated than that.)
Ha, yes, this is a steampunk/retro design somewhat along the lines of simsim314's Remini -- something that could have been constructed as early as the late 1990s, if anyone had had any idea back then that single-channel construction arms were possible.

The rules for what's allowable for single-channel recipes are really quite complicated, as Pavgran says, and I'm not sure that a universal PUSH/PULL/FIRE set can even be found among known recipes. But known recipes are only a tiny fraction of the single-channel search space.

In particular, current recipes always have gliders in pairs, with the active elbow reaction settling down between every pair of gliders. There's no reason why triplets, quadruplets, etc., couldn't be used -- that was just an arbitrary reduction of the search space by simeks to make things easier on the searching side. We might need triplets at least here, to make the search space big enough to make up for the other limitations and allow for universal construction.

I guess the biggest "other limitation" is that the active elbow reaction eventually has to settle down fairly quickly, to produce output gliders and/or get back to an elbow -- because the next recipe always has to be sent immediately, no waiting around, to prevent the overclocked Silver reflectors from triggering the final self-destruct sequence. This is a limitation compared to current technology, but not a serious one -- we'd just have to include lots of NOPs on the tape if we're doing something like building a crabstretcher and then waiting around to trigger its fuses... which would increase the population of this design quite a bit, probably, but wouldn't matter much otherwise.

Long story short, someone would really have to completely duplicate simeks' single-channel search work and make a whole new database of "overclocked-Silver" compatible single-channel recipes, and a new compiler to get slow salvos out of them -- it's not a case where trivial adjustments could be made to slsparse, because there are quite a few assumptions buried in slsparse that aren't true for this project. I guess we'll have to wait and see whether anyone wants to do that work, just to remove a few eater2s from a Demonoid!

User avatar
apg
Moderator
Posts: 3005
Joined: June 1st, 2009, 4:32 pm

Re: How about a fully spartan demonoid?

Post by apg » December 12th, 2021, 12:13 pm

In terms of these steampunk constructions: they could be done with 1990s CGoL knowledge, but they still rely on slmake which relies on modern computing technology (the program to create slmake's gigabyte-scale data directory required 100 GB of resident memory).
What do you do with ill crystallographers? Take them to the mono-clinic!

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

Re: How about a fully spartan demonoid?

Post by dvgrn » December 12th, 2021, 12:23 pm

calcyman wrote:
December 12th, 2021, 12:13 pm
In terms of these steampunk constructions: they could be done with 1990s CGoL knowledge, but they still rely on slmake which relies on modern computing technology (the program to create slmake's gigabyte-scale data directory required 100 GB of resident memory).
I could successfully quibble with that statement, I think. The recipes for the linear propagator, the first spiral growth pattern, and the 10hd and 0hd Demonoids were all built completely by hand, without any access to a database that couldn't have been built just as easily in the 1990s.

It's a completely lunatic way to build self-constructing circuitry, I admit, but it's totally in the Steampunk Realm. It's even possible that my hand-optimized recipes for those projects used enough one-off tricks that slsparse can't do, that the recipes ended up costing a comparable amount to what slsparse would have produced. (I've never dared to check.)

User avatar
Pavgran
Posts: 233
Joined: June 12th, 2019, 12:14 pm

Re: How about a fully spartan demonoid?

Post by Pavgran » December 12th, 2021, 7:00 pm

dvgrn wrote:
December 12th, 2021, 10:04 am
In particular, current recipes always have gliders in pairs, with the active elbow reaction settling down between every pair of gliders.
I think that's not the case. There are pairs and single gliders.
dvgrn wrote:
December 12th, 2021, 10:04 am
Long story short, someone would really have to completely duplicate simeks' single-channel search work and make a whole new database of "overclocked-Silver" compatible single-channel recipes, and a new compiler to get slow salvos out of them -- it's not a case where trivial adjustments could be made to slsparse, because there are quite a few assumptions buried in slsparse that aren't true for this project.
What assumptions do you mean? From my knowledge, slsparse just pastes every recipe as is, maybe delaying the next recipe by 1 tick to get p2 parity right.

I actually think that it's completely possible to write analyzer/filter script that would go through the library, split the recipes by pairs/single gliders, remove those recipes that need less than 94 ticks between glider pair (or that need 93 and the next glider is of wrong parity) and adjust the timings of the rest to meet the needs of the overclocked-Silver. I think that not a significant percentage of the database would be filtered and there could quite possibly be enough recipes in what's left to just replace pp.txt and pp0deg.txt with modified versions and let slmake do the rest.

A hand-modified 0move44 recipe for demonstration:

Code: Select all

x = 1611, y = 1787, rule = LifeHistory
1392.A$1391.A.A$1391.2A7$1482.2A$1482.2A$1483.4B3$1393.2A$1392.A2.A
82.2A$1392.A.A83.2A$1393.A7$1391.2A15.2A$1390.B2AB14.2A$1391.2B6.B$
1392.2B4.3B$1391.14B$1391.14B$1382.B5.17B$1372.2A7.25B$1372.2A5.29B$
1377.B.30B$1376.2A32B$1376.2A33B26.A$1377.28B3.4B24.A.A$1377.3B4.B.
16B7.4B23.2A$1388.10B.2B9.4B$1389.9B13.4B$1376.2A8.11B15.4B$1376.2A7.
12B16.4B4.2A$1385.12B17.4B3.2A$1385.11B19.4B$1385.8B.4B18.4B$1385.7B
4.2A19.4B$1385.7B4.A21.4B$1385.6B6.3A19.4B$1377.2A5.7B8.A20.4B$1377.
2A4.8B12.A17.4B$1382.8B12.A.A17.4B$1381.9B12.2A19.4B16.4B$1365.A14.4B
.6B33.4B14.3B$1364.A.A12.4B.7B34.2A2B12.4B$1365.2A11.4B2.6B35.2A3B10.
4B$1377.4B3.6B37.4B8.4B$1376.4B4.6B38.4B6.4B$1375.4B4.8B38.4B4.4B$
1374.4B6.8B37.2A3B2.4B$1373.4B6.9B16.A20.2A8B4.A$1372.4B7.9B16.3A21.
6B5.3A$1371.4B8.10B18.A21.4B9.A$1370.4B9.5B2A3B17.2A20.6B7.2A$1369.4B
10.5B2A4B3.2A11.4B17.8B6.4B6.2A$1368.4B11.11B3.A14.3B15.4B2.4B7.2B6.A
$1367.4B12.12BA.A13.4B14.4B4.4B4.5B2.BA.A$1366.4B15.8B2.2A4.2A8.5B12.
4B6.4B.B.2B2AB2.B2A$1365.4B10.2A4.7B9.A8.6B11.4B.3B.2B.7BA2BA4B$1364.
4B12.A4.6B7.BA.A8.8B2.27B2A4B$1363.4B13.A.AB.6B3.3B.B2A8.26B2A16B24.
2A$1362.4B15.2AB.14B11.25B2A14B26.A.A$1361.4B18.16B12.7B.32B27.A$
1360.4B20.14B12.42B$1359.4B20.16B11.19B2.2B3.2B6.9B$1358.4B21.18B8.
17B19.9B$1357.4B14.A8.20B2.2B.15B21.5B.4B$1356.4B14.A.A8.38B12.2A9.3B
3.4B$1355.4B16.A10.7B.20B.8B12.2A7.7B2.4B.2A$1354.4B28.6B2.16B2A2B3.
8B19.2A.B.2A3.4BA$1353.4B28.6B3.16B2A2B5.B3.2A20.A3.A5.4B3A$1352.4B
23.A5.4B6.18B10.A18.3A5.3A3.4B.A$1351.4B17.2A4.A.A4.2B2AB12.4B.3B.B
12.3A15.A9.A4.4B6.2A$1350.4B18.2A4.2A3.2AB.2A14.3B20.A31.4B4.A2.A$
1349.4B29.A.AB18.4B46.2A2.2A3B3.A2.A$1348.4B30.A23.2A9.A36.2A2.2A4B3.
2A$1347.4B30.2A23.A9.A.A42.4B$1346.4B57.3A6.A.A43.4B$1345.4B60.A7.A
45.4B$1344.4B116.4B$1343.4B60.A57.4B$1342.4B60.A.A57.4B$1341.4B61.2A
31.2A2.2A22.4B$1340.4B95.2A2.2A23.4B$1339.4B86.2A38.4B$1338.4B87.A.A
38.4B$1337.4B89.A40.4B$1336.4B132.4B$1335.4B134.4B$1334.4B136.4B$
1333.4B138.4B$1332.4B140.4B$1331.4B111.2A29.4B$1330.4B112.2A30.4B$
1329.4B146.4B$1328.4B148.4B$1327.4B128.2A20.4B$1326.4B129.A.A20.4B$
1325.4B131.A.A20.4B$1324.4B133.A22.4B$1323.4B158.4B92.B$1322.4B160.4B
$1321.4B162.4B$1320.4B164.4B$1319.4B129.2A35.4B$1318.4B129.A2.A35.4B$
1317.4B131.A.A36.4B$1316.4B133.A38.4B$1315.4B174.4B$1314.4B121.2A53.
4B$1313.4B122.2A54.4B$1312.4B180.4B$1311.4B182.4B$1310.4B184.4B$1309.
4B122.2A62.4B$1308.4B123.2A63.4B$1307.4B190.4B$1306.4B192.4B$1305.4B
194.4B$1304.4B196.4B$1303.4B198.4B$1302.4B200.4B$1301.4B202.4B$1300.
4B204.4B$1299.4B206.4B$1298.4B208.4B$1297.4B210.4B$1296.4B212.4B$
1295.4B214.4B$1294.4B216.4B$1293.4B218.4B$1292.4B220.4B$1291.4B222.4B
$1290.4B224.4B$1289.4B226.4B$1288.4B228.4B$1287.4B230.4B$1286.4B232.
4B$1285.4B234.4B$1284.4B20.A215.4B$1283.4B20.A.A215.4B$1282.4B20.A.A
217.4B$1281.4B21.2A219.4B$1280.4B244.4B$1279.4B246.4B$1279.3B248.4B$
1279.2B250.4B$1279.B35.2A215.4B$1314.A2.A215.4B$1314.A.A217.4B$1315.A
219.4B$1536.4B$1537.4B$1538.4B$1539.4B14.A$1540.4B12.A.A$1541.4B11.2A
$1542.4B$1543.4B$1544.4B$1545.4B$1319.2A225.4B$1319.2A207.2A17.4B27.
2A$1528.2A18.4B26.2A$1534.A14.4B$1324.2A207.A.A14.4B$1324.2A208.A16.
4B14.2A4.2A$1552.4B5.2A6.2A2.2B2AB$1528.2A23.4B4.2A10.4B$1528.A.A12.A
10.4B15.6B$1529.A11.3A11.4B15.5B$1525.A14.A15.4B14.6B$1525.3A12.2A15.
4B13.7B$1528.A7.2B.3B3.7B.B4.4B12.6B$1527.2A6.5B5.13B.4B10.7B$1527.5B
2.36B4.6B$1529.42B2.7B$1528.2A41B2.7B$1528.2A17B2A22B.9B$1529.B.16B2A
32B$1531.23B3.2B2.20B4.B$1532.9B2.10B11.19B.B2A21.2A$1533.8B3.6B16.
19B2A7.2A12.A.A$1534.7B4.3B19.17B.B7.A2.A12.A$1531.11B3.B20.17B11.A.A
$1530.12B2.2A20.17B12.A$1530.12B2.A19.2AB.15B$1530.11B4.3A15.A.AB4.
12B$1530.8B.4B4.A15.A9.11B$1530.7B4.2A19.2A8.13B$1530.7B4.A30.12B$
1530.6B6.3A28.10B$1529.7B8.A14.2A13.9B$1528.8B23.A.A12.9B$1527.8B25.A
13.9B$1527.8B40.5B$1519.2A4.2AB2.6B39.4B$1519.A.A2.A.AB.7B39.4B$1520.
A3.A4.6B15.2A22.4B7.2A$1523.2A4.8B4.B8.A22.4B8.2A$1530.B2A6B.4B3.BA.A
21.4B$1529.2B2A13B.B2A21.4B$1530.18B22.4B$1531.17B21.4B$1534.13B21.4B
$1533.12B22.4B$1524.2A7.10B23.4B$1523.A2.A5.11B22.4B$1524.2A6.7B.2B
22.4B$1531.11B21.4B$1532.11B19.4B$1532.11B18.4B$1532.11B17.4B$1530.2A
B2.8B16.4B$1529.A.AB3.7B15.4B$1529.A6.7B13.2A3B$1528.2A7.6B13.2A2B$
1537.7B11.4B$1537.8B9.4B$1516.2A20.8B5.2A4B$1515.A.A20.9B4.2A3B$1516.
A20.6B.4B3.4B$1537.7B.4B.4B$1538.6B2.7B$1538.6B3.5B$1533.2A3.2B2AB4.
5B$1533.2A2.3B2A2B2.7B20.2A$1537.7B.4B.4B19.A.A12.A$1538.5B.4B3.4B19.
A12.A.A$1518.2A18.9B5.4B31.2A$1518.2A18.8B7.4B$1538.7B9.4B$1529.2A7.
6B11.4B$1518.2A10.A7.7B5.2A4.4B$1518.2A10.A.AB3.7B6.A6.3B$1531.2AB.
11B.BA.A8.B$1508.2A23.10BA2B.B2A9.B$1508.2A22.10BABA3B$1533.9BABA3B$
1531.2AB.8BA2B$1530.A.AB2.8B21.2A$1530.A4.4B2.3B21.A.A$1529.2A3.4B3.
5B21.A$1533.4B6.B2A21.2A$1526.2A4.4B8.A$1526.2A3.4B10.3A$1530.4B13.A$
1529.4B$1526.2A4B2A$1526.2A3BA.A$1526.4B.A$1525.4B.2A$1524.4B$1523.4B
$1522.2A.B$1521.A.A$1520.B2.A3.2A$1519.4B3.A2.A$1518.4B4.A2.A$1517.4B
6.2A$1518.2B7$1540.2A$1539.A.A$1540.A84$1423.3A$1422.B2.A$1421.2B.A$
1420.4B$1419.4B$1419.3B$1420.B21$1396.2A$1397.2A$1396.A99$1295.2A$
1296.2A$1295.A21$1272.2A$1271.A.A$1273.A99$1171.A$1171.2A$1170.A.A99$
1070.A$1070.2A$1069.A.A22$1046.2A$1045.A.A$1047.A99$945.A$945.2A$944.
A.A100$843.3A$845.A$844.A32$809.2A$808.A.A$810.A99$708.A$708.2A$707.A
.A22$684.A$684.2A$683.A.A99$583.A$583.2A$582.A.A28$553.A$553.2A$552.A
.A99$452.3A$454.A$453.A22$428.2A$429.2A$428.A99$327.2A$326.A.A$328.A
99$226.2A$225.A.A$227.A99$125.2A$124.A.A$126.A21$102.A$102.2A$101.A.A
99$.A$.2A$A.A!
There were no problems in modifying the recipe. Just an analysis of recipe's structure and meeting timing needs. I can't exactly formulate right now what the needs are but that's just a matter of careful inspection. I just haven't done that.

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

Re: How about a fully spartan demonoid?

Post by dvgrn » December 12th, 2021, 10:44 pm

The main assumptions I was thinking of are the long-range elbow moves built in to slsparse -- the ability to launch different Corderships in different directions, then wait a while, then shoot them down. Also the option to launch a 180-degree glider, wait a while, and then make a new elbow out of it, a long way toward the source from its previous location.

At the moment there's no mechanism to keep slsparse from throwing these things in to a large compilation, and they won't work in an overclocked Silver reflector. It's possible to fix any long empty gaps that might show up, but you'd have to patch in NOP operations by hand, and adjust them to keep there from being any oversized gaps in the glider stream at all.

If it turns out that a majority of current single-channel recipes can be used in an overclocked Silver reflector, I'll be surprised, but not too surprised. And yes, I should have said "pairs of gliders at most" -- "pairs and singleton gliders". The main point I wanted to make about that is that, *if* there ends up being a shortage of usable recipes, that's not the end of the story: it would be possible to move to the much larger search space of triplets of synchronized gliders, and see if that gets us back to a reasonably efficient universal toolkit.

User avatar
Pavgran
Posts: 233
Joined: June 12th, 2019, 12:14 pm

Re: How about a fully spartan demonoid?

Post by Pavgran » December 13th, 2021, 11:07 am

First version of filter script:

Code: Select all

import golly as g

gliders=["3o$o$bo!","b2o$2o$2bo!","b2o$bobo$bo!","2bo$b2o$bobo!"]
gliderlist=[g.parse(gl) for gl in gliders]
elbow=g.parse("2o$2o!")

def makerecipe(recipe):
    g.new("temp")
    g.putcells(g.transform(elbow,-5,-2))
    g.putcells(gliderlist[0])
    totaltime=0
    for i in recipe[1:]:
        if i == 0: continue
        totaltime+=i
        g.putcells(g.transform(gliderlist[totaltime%4],totaltime//4,totaltime//4))
    return totaltime

def recipehash(recipe):
    time = makerecipe(recipe)
    g.update()
    g.run(time+10000)
    output = g.getrect()
    if len(output) == 0:
        return 0
    return g.hash(output)

def processrecipe(recipe):
    golden = recipehash(recipe[:-1])
    duostarted = False
    for i in range(2, len(recipe)):
        if recipe[i] > 405:
            return False, []
        if i == len(recipe)-1:
            recipe[i] = 404
        elif not duostarted:
            recipe[i] = [404, 405][recipe[i]%2]
            cur = recipehash(recipe[:-1])
            if cur != golden:
                return False, []
            duostarted = True
        else:
            if 93 <= recipe[i] <= 405 or recipe[i] == 92 and recipe[i-1] == 405 and i+2 < len(recipe) and recipe[i+1]%2 == 1:
                duostarted = False
            else:
                recipe[i] = [404, 405][recipe[i]%2]
                cur = recipehash(recipe[:-1])
                if cur != golden:
                    return False, []
                duostarted = True
    return True, recipe

g.addlayer()
g.setrule("Life")
g.setalgo("HashLife")
total = 0
passed = 0
g.show("{}/{}".format(passed, total))
with open("pp.txt") as inp, open("pp-filter.txt", "w") as out:
    for line in inp:
        recipe, value = line.strip().split(']')
        recipe = list(map(int, recipe[1:].split(',')))
        value = value.strip()
        status, recipe = processrecipe(recipe)
        if status:
            out.write("{} {}\n".format(recipe, value))
            passed += 1
        total += 1
        g.show("{}/{}".format(passed, total))
It is quite dumb and doesn't pair up single gliders when it's possible. But at least it works.
It turns out that 66 out of 147 recipes in 90-degree pp.txt toolkit are available. And it looks like it remains universal:
QuickSilver_demo_recipe.mc
A small construction demo
(128.97 KiB) Downloaded 133 times

Unfortunately, 90-degree kit is not enough to build that demonoid. There has to be another (temporary) 90-degree reflector to access the construction site along the path. That could be Snark, or, if we want to remain fully spartan, another Silver's reflector. In any case, that reflector has to be build by 0-deg gliders. I think I can run the script on pp0deg.txt but the current version is very slow so that would be a long run. Can someone more proficient in optimizing Golly scripts hint at what could be improved?
Attachments
pp.txt
Note: there is a "destroy" recipe at the beginning. It doesn't work with QuickSilver but has (I think) to be here for slsparse to work
(7.98 KiB) Downloaded 104 times

googleplex
Posts: 331
Joined: January 24th, 2018, 4:36 pm
Location: Minnesota, USA

Re: How about a fully spartan demonoid?

Post by googleplex » December 13th, 2021, 11:43 am

Pavgran wrote:
December 13th, 2021, 11:07 am
Unfortunately, 90-degree kit is not enough to build that demonoid. There has to be another (temporary) 90-degree reflector to access the construction site along the path. That could be Snark, or, if we want to remain fully spartan, another Silver's reflector. In any case, that reflector has to be build by 0-deg gliders. I think I can run the script on pp0deg.txt but the current version is very slow so that would be a long run. Can someone more proficient in optimizing Golly scripts hint at what could be improved?
what about using a baked slow salvo with splitters to "build" the demonoid within range of the elbow? If i remember correctly, there is a script to make such a constellation. You could use a one time lwss seed to make a target block.

EDIT:
actually, what about having the initial elbow create a freeze-dried salvo which creates a silver reflector along the elbow: (unlabeled, bad diagram below)

Code: Select all

x = 269, y = 103, rule = B3/S23Super
22$222.D$221.B.B$220.B3.B$219.B5.B$218.B7.B$217.B9.B$216.B11.B$146.D44.
D23.B13.B$147.B42.B.B21.B15.B$96.2P50.B40.B3.B19.B17.B$96.2P51.B38.B5.
B16.DB19.B21.D$94.2P54.B36.B7.B14.BD21.B19.BD$94.P.B54.B34.B9.B14.3D20.
B17.B.3D$97.B54.B32.B11.B37.B15.B5.B$98.B26.3D25.3D28.B13.3D35.3D11.B
7.B$99.B25.D27.D29.B14.D37.D10.L.B9.B$65.D34.D24.D27.D28.B15.D37.D10.
LB11.B$64.B34.B24.B27.B25.3D16.B18.3D16.B11.3L9.3D$63.B34.B24.B27.B26.
DB16.B19.D17.B24.D$62.B34.B24.B27.B27.D16.B20.D16.B25.D$61.B34.B24.B27.
B27.B16.B37.B25.B$60.B34.B24.B27.B27.B16.B37.B25.B$59.B34.B24.B27.B27.
B16.B37.B25.B$29.D28.B34.B24.B27.B44.B37.B23.3L$25.D2.B25.D2.B31.D2.B
21.D2.B24.D2.B41.D2.B34.D2.B26.L$24.BD.B25.BD.B31.BD.B21.BD.B24.BD.B41.
BD.B34.BD.B27.L$23.B.3D24.B.3D30.B.3D20.B.3D23.B.3D40.B.3D33.B.3D$22.
B5.B22.B5.B28.B5.B18.B5.B21.B5.B38.B5.B31.B5.B$21.B7.B20.B7.B26.B7.B16.
B7.B19.B7.B36.B7.B29.B7.B$18.L.B9.B16.L.B9.B22.L.B9.B12.L.B9.B15.L.B9.
B32.L.B9.B25.L.B9.B$18.LB11.B15.LB11.B21.LB11.B11.LB11.B14.LB11.B31.L
B11.B24.LB11.B$18.3L9.3D14.3L9.3D20.3L9.3D10.3L9.3D13.3L9.3D30.3L9.3D
23.3L9.3D$30.D28.D34.D24.D27.D44.D37.D$30.D28.D34.D24.D27.D44.D37.D$29.
B28.B34.B24.B27.B44.B37.B$28.B28.B34.B24.B27.B44.B37.B$27.B28.B34.B24.
B27.B44.B37.B$24.3L26.3L32.3L22.3L25.3L42.3L35.3L$26.L28.L34.L24.L27.
L44.L37.L$26.L28.L34.L24.L27.L44.L37.L!
Look at me! I make patterns in golly and go on the forums! I wanna be Famous!

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

Re: How about a fully spartan demonoid?

Post by dvgrn » December 13th, 2021, 1:49 pm

googleplex wrote:
December 13th, 2021, 11:43 am
what about using a baked slow salvo with splitters to "build" the demonoid within range of the elbow? If i remember correctly, there is a script to make such a constellation. You could use a one time lwss seed to make a target block.

EDIT:
actually, what about having the initial elbow create a freeze-dried salvo which creates a silver reflector along the elbow...
These things could both be done, if I understand the suggestions correctly. But we already have a lot of 0-degree recipes with offsets up to 99 lanes. If Pavgran's ratio holds up -- i.e., if about 45% of the 0-degree single-channel recipes are QuickSilver-compatible -- then we'll have several recipes to choose from for each lane output, and we can build a Silver reflector aligned with the single-channel lane, using plain 0-degree gliders.

We really only need one working 0-degree recipe at each width, or possibly two recipes, the cheapest ones that do an elbow PULL and an elbow PUSH; having the others around doesn't really help with optimization at all. So maybe the tester script can be set up to move on to the next lane as soon as it finds a working PULL and PUSH at a given lane offset. That might speed up the processing to a tolerable level (?).

The actual Silver reflector only extends 80 cells to the side of the input lane. Bait-object self-destruct "decorations" will go a little wider than that, but slsparse can often create a narrow recipe that builds a few objects farther out, without needing gliders that far out -- and no doubt GoL-destroy could produce self-destruct circuitry that avoided making the whole structure too wide.

User avatar
Pavgran
Posts: 233
Joined: June 12th, 2019, 12:14 pm

Re: How about a fully spartan demonoid?

Post by Pavgran » December 17th, 2021, 7:58 am

It works, it seems.
Improved script (but still not ideal):

Code: Select all

import golly as g

gliders=["3o$o$bo!","b2o$2o$2bo!","b2o$bobo$bo!","2bo$b2o$bobo!"]
gliderlist=[g.parse(gl) for gl in gliders]
elbow=g.parse("2o$2o!")

def makerecipe(recipe):
    g.new("temp")
    g.putcells(g.transform(elbow,-5,-2))
    g.putcells(gliderlist[0])
    totaltime=0
    for i in recipe[1:]:
        if i == 0: continue
        totaltime+=i
        g.putcells(g.transform(gliderlist[totaltime%4],totaltime//4,totaltime//4))
    return totaltime

def recipehash(recipe):
    time = makerecipe(recipe)
    g.update()
    g.run(time+4000)
    output = g.getrect()
    pop = g.getpop()
    if len(output) == 0:
        return 0
    g.run(4)
    output2 = g.getrect()
    pop2 = g.getpop()
    return (pop, pop == pop2, output == output2)

def processrecipe(recipe):
    copy = recipe.copy()
    golden = recipehash(recipe[:-1])
    duostarted = False
    for i in range(2, len(recipe)):
        if recipe[i] > 405:
            return False, []
        if i == len(recipe)-1:
            recipe[i] = 404
        elif not duostarted:
            recipe[i] = [404, 405][recipe[i]%2]
            #cur = recipehash(recipe[:-1])
            #if cur != golden:
                #return False, []
            duostarted = True
        else:
            if 93 <= recipe[i] <= 405 or recipe[i] == 92 and recipe[i-1] == 405 and i+2 < len(recipe) and recipe[i+1]%2 == 1:
                duostarted = False
            else:
                recipe[i] = [404, 405][recipe[i]%2]
                #cur = recipehash(recipe[:-1])
                #if cur != golden:
                    #return False, []
                duostarted = True
        if recipe[i] >= 404 and recipe[i-1] >= 404 and recipe[i-2] >= 404:
            val = copy[i-1]
            if val < 93:
                if val == 91:
                    val = 93
                elif recipe[i] == 405 and recipe[i-2] == 405:
                    val = 92
                else:
                    val = 94
            recipe[i-1] = val
    cur = recipehash(recipe[:-1])
    if cur != golden:
        return False, []
    return True, recipe

g.addlayer()
g.setrule("Life")
g.setalgo("HashLife")
total = 0
passed = 0
g.show("{}/{}".format(passed, total))
name = "pp0deg"
with open(f"{name}.txt") as inp, open(f"{name}-filter.txt", "w") as out:
    for line in inp:
        recipe, value = line.strip().split(']')
        recipe = list(map(int, recipe[1:].split(',')))
        value = value.strip()
        status, recipe = processrecipe(recipe)
        if status:
            out.write("{} {}\n".format(recipe, value))
            passed += 1
        total += 1
        g.show("{}/{}".format(passed, total))
Filtered recipes:
recipes.zip
(148.8 KiB) Downloaded 99 times
I had to hack slmake a bit for it to use updated 0move44 and 7move-1 recipes (they are hardcoded in the source).

The result:
QuickSilver Demonoid.mc.gz
(353.77 KiB) Downloaded 277 times
QuickSilver Demonoid predecessor.mc.gz
(253.27 KiB) Downloaded 103 times
Speed is 5923c/2^24 ≈ 0.000353c
The design as it is couldn't be made very HashLife-friendly without making another reflector with opposite color.
I've not spent much time optimizing the design but I don't think very much could be squeezed out. (Apart from making faster elbow moves with cordership but that's left as an exercise to the reader)

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

Re: How about a fully spartan demonoid?

Post by dvgrn » December 17th, 2021, 10:40 am

Pavgran wrote:
December 17th, 2021, 7:58 am
I've not spent much time optimizing the design but I don't think very much could be squeezed out. (Apart from making faster elbow moves with cordership but that's left as an exercise to the reader)
I'm not sure that building Corderships or crabs is exactly in the spirit of this retro-steampunk design, so it probably makes sense to stop right here. Very impressive!

I'm curious about the self-destruct mechanism, though. The predecessor pattern isn't quite clean -- it sends out an extra glider at one point. There's some long-range communication between the sides, where one glider comes in and sends back two gliders to clean up a fleet and block that the self-destruct mechanism didn't handle.

What was the design reason for that? It seems like one of the strange strengths of the QuickSilver design is that you can get a self-destruct signal for free: basically as soon as a circuit stops being used, it will destroy itself one way or another, so it's just a matter of directing the self-destruction so that it's clean. Why are any gliders needed at all that aren't on the single-channel lanes (besides any temporary ones that show up in the self-destruct circuitry)?

User avatar
Pavgran
Posts: 233
Joined: June 12th, 2019, 12:14 pm

Re: How about a fully spartan demonoid?

Post by Pavgran » December 17th, 2021, 4:50 pm

dvgrn wrote:
December 17th, 2021, 10:40 am
I'm curious about the self-destruct mechanism, though. The predecessor pattern isn't quite clean -- it sends out an extra glider at one point. There's some long-range communication between the sides, where one glider comes in and sends back two gliders to clean up a fleet and block that the self-destruct mechanism didn't handle.

What was the design reason for that?
Well, that's a question for googleplex. I've made only minor modifications to their design.
There was a possibility of keeping OTTs helping destroying fleet and block attached to the reflector actually using them, just at some distance, but I've decided to keep them as is. After all, that doesn't change things very much. I see no problem in self-destruct gliders travelling a lot. More self-contained reflectors with just a single channel coming in and out are probably better aesthetically though.

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

Re: How about a fully spartan demonoid?

Post by dvgrn » December 17th, 2021, 6:52 pm

Pavgran wrote:
December 17th, 2021, 7:58 am
I had to hack slmake a bit for it to use updated 0move44 and 7move-1 recipes (they are hardcoded in the source).
Would it be easy for you to post a diff / comparison between your current slsparse and the standard one out on GitHub?

It's not particularly important, but I'd be curious to see where you found the details that need to change to support these QuickSilver recipes.

User avatar
Pavgran
Posts: 233
Joined: June 12th, 2019, 12:14 pm

Re: How about a fully spartan demonoid?

Post by Pavgran » December 17th, 2021, 7:13 pm

dvgrn wrote:
December 17th, 2021, 6:52 pm
Pavgran wrote:
December 17th, 2021, 7:58 am
I had to hack slmake a bit for it to use updated 0move44 and 7move-1 recipes (they are hardcoded in the source).
Would it be easy for you to post a diff / comparison between your current slsparse and the standard one out on GitHub?

It's not particularly important, but I'd be curious to see where you found the details that need to change to support these QuickSilver recipes.
It's just the hardcoded recipes on lines 200 and 204 in file headers/slperp.h in function load0deg. I just modified them. That and updated pp.txt and pp0deg.txt files in data/simeks folder.

There was also a problem with too wide 0-deg construction (some of the 0deg lanes are completely filtered out and are unusable) and I fiddled with is_narrow function's constants IIRC. But I just ended up not trying to build thinga that are too wide so that change was unnecessary.

googoIpIex
Posts: 298
Joined: February 28th, 2019, 4:49 pm
Location: Sqrt(-1)

Re: How about a fully spartan demonoid?

Post by googoIpIex » December 28th, 2021, 1:33 am

dvgrn wrote:
December 17th, 2021, 10:40 am
I'm curious about the self-destruct mechanism, though. The predecessor pattern isn't quite clean -- it sends out an extra glider at one point. There's some long-range communication between the sides, where one glider comes in and sends back two gliders to clean up a fleet and block that the self-destruct mechanism didn't handle.
The main reason is just laziness on my part for the self-destruct mechanism. The fleet doesn't show up for quite some time, and fleets also have no simple 1-glider destruction. my solution was to look for 2SL splitters that send 2 gliders in the same direction. I looked through them, and using seeds of destruction, found one which produced a salvo that destroyed the fleet but released 2 gliders. The block is there to absorb the gliders. this solution is rather bulky, and the demo design I originally posted placed this constellation directly next to the other half of the arm, which Pavgran then interpreted as intentional.

It wouldn't be too hard to make a different version of the self destruct mechanism which uses a different mechanism to delete the fleet.
woomy on a vroomy

Post Reply