0E0P constructions

For discussion of specific patterns or specific families of patterns in Conway's Game of Life, both newly-discovered and well-known.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

speedydelete wrote: April 18th, 2026, 1:46 pm Ok, sure. The only thing that will need to be changed in a 0E0P built with the new techniques is the recipe. Yeah, it's probably a good idea to build the new metacell using the old single-channel, then migrate it to the new one separately...
Thanks :). I am reworking the SoD to be more compatible with the "in evelope" recipes. Shell is almost done.

Code: Select all

x = 942, y = 955, rule = LifeHistory14
622.K$622.K$622.K17$640.I$640.3I$643.I$632.2K8.2I$632.2K5$662.2I$662.
2I4$660.2I$660.I.I$662.I$662.2I4$638.2K$638.2K$651.2I$651.2I10.3K$
643.2I$644.I$641.3I$641.I2$642.I$641.I.I$641.I.I$639.3I.2I$638.I$639.
3I.2I$641.I.2I$637.K$636.K.K12.2I$635.K2.K12.2I7.2I$636.2K22.I$658.I.
I$658.2I4$638.2I$638.2I5$654.I$653.I.I$653.I.I$654.I$655.3I$657.I19$
937.D3.D$938.D.D$939.D$938.D.D$937.D3.D33$450.E$451.2E$450.2E10$454.E
$455.2E$454.2E9$467.E$468.2E$467.2E17$489.2K$488.K.K$489.K17$506.K5.
2K$506.K5.K.K$506.K6.K.K$514.K8$504.2K$504.2K6.2K$511.K2.K$511.K2.K$
512.2K285.2D$768.D23.D6.D.D$772.4D2.4D2.D3.D.5D4.D$768.D3.D3.D.D3.D.D
3.D3.D$768.D3.D3.D.D3.D.D3.D3.D$768.D3.D3.D.D3.D.D3.D3.D$768.2D2.D3.D
.4D3.4D4.2D$778.D$778.D2$768.D4.3D3.3D5.D9.3D$767.2D3.D3.D.D3.D3.2D8.
D3.D$768.D3.D2.2D5.D2.D.D8.D2.2D$768.D3.D.D.D4.D2.D2.D8.D.D.D$768.D3.
2D2.D3.D3.5D7.2D2.D$768.D3.D3.D2.D7.D8.D3.D$767.3D3.3D2.5D4.D4.D4.3D
12$551.I$551.3I$554.I$543.2K8.2I$543.2K5$573.2I$573.2I4$571.2I$571.I.
I$573.I$573.2I4$549.2K$549.2K$562.2I11.K$562.2I11.K$554.2I19.K$555.I$
552.3I$552.I2$553.I$552.I.I$552.I.I$550.3I.2I$549.I$550.3I.2I$552.I.
2I$548.K$547.K.K12.2I$546.K2.K12.2I7.2I$547.2K22.I$569.I.I$569.2I4$
549.2I$549.2I5$565.I$564.I.I$564.I.I$565.I$566.3I$568.I68$646.2D$646.
D.D$646.D2$635.D4.D$635.2D4.D$635.D.D3.D3.4D.D$635.D2.D2.D3.D$635.D3.
2D2$635.2D4.D3.5D$637.D3.D7.D$638.D2.D7.D$639.D.D7.D$640.2D3.4D2$639.
2D2.7D$635.D2.D2.D3.D3.D$635.D2.D2.D3.D3.D$635.D2.D2.D3.D3.D$636.5D5.
3D2$636.2D.2D5.4D$635.D2.D2.D3.D$635.D2.D2.D3.D$635.D2.D2.D3.D$636.2D
.2D4.5D2$636.D3.D8.D$635.D5.D7.D$635.D2.D2.D4.5D$635.D2.D2.D3.D3.D$
636.2D.2D4.D3.D2$636.D2.3D$635.D2.D2.D$635.D2.D2.D$635.D2.D2.D$636.2D
3.D2$637.2D$637.D.D$637.D2.D$635.7D$637.D4$635.D4$636.5D$635.D.D3.D$
635.D2.D2.D$635.D3.D.D$636.5D146$267.K$267.K$267.K2$267.K$267.K$267.K
9$281.I$281.3I$284.I$273.2K8.2I$273.2K5$303.2I$303.2I4$301.2I$301.I.I
$303.I$303.2I4$279.2K$279.2K$292.2I11.K$292.2I11.K$284.2I19.K$285.I$
282.3I$282.I2$283.I$282.I.I$282.I.I$280.3I.2I$279.I$280.3I.2I$282.I.
2I$278.K$277.K.K12.2I$276.K2.K12.2I7.2I$277.2K22.I$299.I.I$299.2I4$
279.2I$279.2I5$295.I$294.I.I$294.I.I$295.I$296.3I$298.I20$286.3D4.D4.
D5.3D3.3D3.3D3.3D3.3D3.3D$285.D3.D8.D4.D3.D.D3.D.D3.D.D5.D3.D.D3.D$
285.D2.2D7.5D.D3.D.D5.D5.D5.D5.D$285.D.D.D8.D2.D2.3D3.3D3.3D2.4D3.3D
3.3D$285.2D2.D8.D.D2.D3.D5.D5.D.D3.D5.D5.D$285.D3.D8.2D3.D3.D5.D5.D.D
3.D5.D5.D$286.3D9.D5.3D2.5D.5D2.3D2.5D.5D2$325.D$325.D$309.2D4.4D3.4D
.D3.D2.2D$311.D3.D3.D.D3.D.D3.D3.D$311.D3.D3.D.D3.D.D3.D3.D4.2D$311.D
3.D3.D.D3.D.D3.D3.D4.D.D$309.5D.D3.D2.4D2.4D8.D$311.D23.D190$70.2K$
70.K.K$71.2K2$81.2K$80.K.K$81.K$64.I$64.3I$67.I$66.2I5$27.K$27.K58.2I
$27.K58.2I2$27.K$27.K$27.K56.2I$84.I.I$86.I$86.2I6$75.2I$75.2I$67.2I$
68.I$65.3I$65.I19.K$60.K23.K.K$59.K.K4.I17.K.K$58.K2.K3.I.I17.K$58.K.
K4.I.I$59.K3.3I.2I$62.I$63.3I.2I26.5D$65.I.2I25.D.D3.D$94.D2.D2.D$75.
2I17.D3.D.D$75.2I7.2I9.5D$84.I$82.I.I14.K$82.2I15.K$99.KD3$62.2I$62.
2I34.D$94.7D$95.D2.D$96.D.D$97.2D$78.I$77.I.I7.2D$77.I.I7.D.D10.D$78.
I8.D6.7D$79.3I13.D4.D$81.I2$86.D3.D4.2D.2D$86.D3.D3.D2.D2.D$85.5D4.D
2.D2.D$86.D7.D5.D$86.D8.D3.D2$86.5D4.2D.2D$90.D3.D2.D2.D$90.D3.D2.D2.
D$90.D3.D5.D$86.4D5.D3.D2$87.3D5.5D$86.D3.D3.D2.D2.D$86.D3.D3.D2.D2.D
$86.D3.D3.D2.D2.D$86.7D2.2D$3K$2.K84.4D4.2D.2D$.K84.D7.D2.D2.D$86.D7.
D2.D2.D$86.D7.D5.D$86.5D4.D3.D2$95.2D.2D$90.D3.D2.D2.D$85.D.4D3.D2.D
2.D$94.D2.D2.D$95.2D.2D!
^ On SEEE/4 the ott starting next spiral SoD is changed (during orriented build) to glider absorber (ota) as this is the last spiral to be cleaned.
(Turner SoD starting the reaction on transparent lane should differ from the insertors, whose destruction does not start by backward traveling signal.
The insertors SoD are upto phase equal (how to build the different ott/ots/ota in their neighbourhood?).

Bondersnatch

Code: Select all

x = 73, y = 58, rule = LifeHistory14
72.pH$71.pPpJ$70.pXpRpN$69.qHqBpVpT$68.qPqJqFqD$46.2K19.qXqRqNqL$42.
2K2.2K18.rHrBqVqT$22.I20.K21.JrJrFrD$21.I.I18.K21.rXJrNJ$21.I.I7.2I9.
K.K18.sHsB2J$19.3I.2I5.xV2IxX9.2K17.sPsJsFsD$18.I4.xF6.xX2yB5.2I21.sX
sRsNsL$19.3IxF2IxJ5.yB2.yN2.yN2IyN19.tHtBsVsT$21.I.2IxL.xNxJxN3yBxX7yN
18.tPtJtFtD$23.2yN5xLxJyFyB2xV5yN18.tXtRtNtL$24.xJ3xLxVxL2xHyLyBxX6yN
16.uHuBtVtT$24.yN5xLxJyN2yB8yN14.uPuJuFuD$23.xJxHxLyNxNxJxNxV3yBI8yN
12.uXuRuNuL$23.xJxHxJ6yNyBIxTI7yN11.vHvBuVuT$24.7yNyBIxTxVI7yN.yN8.vP
vJvFvD$25.yNyHyF2yNyJyDxX2I9yN2I6.vXvRvNvL$24.yNyJyNyHyDyNyLyHyF9yN.yN
2I5.wHwBvVvT$24.yNyLyF2yB11yN4.yN5.wPwJwFwD$23.4yNyD12yN9.wXwRwNwL$
22.2I19yN5.xHxBwVwT$22.2I20yN3.xPxJxFxD$23.21yN2.xXxRxNxL$24.19yN2.yH
yBxVxT$25.20yNyJyFyD$25.13yN.7yNyL$25.21yN$24.4yN.15yN$23.4yN3.6yN2.
4yN$22.4yN7.3yN3.3yN$21.4yN8.5yN$20.4yN11.yN2I$19.4yN13.I$18.4yN11.K
3.3I$17.4yN11.K.K4.I$16.4yN12.K.K$15.4yN14.K$14.4yN$13.4yN$12.4yN$11.
4yN$10.4yN$9.4yN$8.4yN$7.4yN$6.4yN$5.4yN$4.4yN$3.4yN$2.4yN$.4yN$4yN$
3yN$.yN!
Scorbie shifter/colorchanger

Code: Select all

x = 114, y = 73, rule = LifeHistory14
59.2K$58.K2.K$47.2K10.K2.K$46.K.K11.2K49.K$47.K62.rPK.K$109.rXrR2K$
108.sHsBrVrT$107.sPsJsFsD$106.sXsRsNsL$73.I31.tHtBsVsT$73.3I28.tPtJtF
tD$43.2I11.I19.I4.yN21.tXtRtNtL$42.yN2IyN9.I.I17.2I3.3yN19.uHuBtVtT$
43.3yN9.I.I17.9yN5.2I10.uPuJuFuD$42.yN.yN9.2I.3I2.2I13.8yN4.I10.uXuRuN
uL$42.5yN8.yN4.I2.I13.8yN.yNI.I9.vHvBuVuT$42.6yN6.2IyN3I3.I.IyN2.4yN
3.9yN.yN2I9.vPvJvFvD$42.8yN4.2I.I6.2IyN2.5yN2.11yN10.vXvRvNvL$43.13yN
10.8yN2.11yN9.wHwBvVvT$41.13yN12.21yN8.wPwJwFwD$40.15yN12.19yN8.wXwRwN
wL$40.15yN10.yN2.19yN6.xHxBwVwT$39.17yN.yN5.26yN3.xPxJxFxD$39.51yN.xX
xRxNxL$38.13yN2I13yN2I21yN.yHyBxVxT$37.14yN2I13yN2I22yNyJyFyD$36.2IyN
3.49yNyL$35.I2.I4.48yN$34.I.2I5.6yN3.yN2.2yN2.33yN$34.I7.6yN13.4yN2.
7yN2.16yN$33.2I6.9yN17.6yN3.16yN$40.4yN4.2I19.3yN5.14yN$39.4yN5.I21.yN
4.3yN.9yN$38.4yN7.3I23.2I3.8yN$37.4yN10.I24.I6.4yN$36.4yN33.3I5.4yN$
35.4yN34.I7.2I$34.4yN44.I$33.4yN24.2K16.3I6.qP$32.4yN24.K2.K15.I7.3K$
31.4yN26.K2.K23.qP$30.4yN28.2K$29.4yN$28.4yN$27.4yN$26.4yN$25.4yN$24.
4yN$23.4yN$22.4yN$21.4yN$20.4yN$19.4yN27.2K$18.4yN28.K.K$17.4yN30.K$
16.4yN$15.4yN$14.4yN$13.4yN$12.4yN$11.4yN$10.4yN$9.4yN$8.4yN$7.4yN$6.
4yN$5.4yN$4.4yN$3.4yN$2.4yN$.2H2yN$HyNHyN$.yNH!
Scorbie splitter ...different destruction scenarios.

Code: Select all

x = 256, y = 183, rule = LifeHistory14
9.4yN33.4yN92.4yN$10.4yN31.4yN92.4yN$11.4yN29.K3yN92.K3yN$12.4yN27.yN
KyNK92.yNKyNK$13.4yN25.2yN2K92.2yN2K$14.4yN23.4yN92.4yN$15.4yN21.4yN
92.4yN$16.4yN19.4yN92.4yN$17.4yN17.4yN92.4yN82.K$18.4yN15.4yN76.yN15.
4yN82.K.K$19.4yN13.4yN77.2yN13.4yN84.2K$20.4yN11.4yN78.3yN11.4yN92.K
3yN$21.4yN9.4yN79.4yN9.4yN92.yNKyNK$22.4yN7.4yN80.3D2yN7.4yN92.2yN2K$
23.4yN5.4yN83.4yN5.4yN81.2K9.4yN$24.4yN3.4yN85.4yN3.4yN81.K.K8.4yN$
25.4yN.4yN87.4yN.4yN82.K9.4yN$19.2K4.8yN88.8yN81.K.K4.3yN.4yN$18.K.K
3.8yN10.I77.8yN10.I71.2K4.8yN10.I$18.2K4.9yN7.3I77.9yN7.3I77.7yN.yN7.
3I$16.2K6.10yN5.I80.10yN5.I80.10yN5.I$15.K.K4.12yN5.2I77.12yN5.2I77.
12yN5.2I$15.2K4.14yN.5yN76.14yN.5yN73.2yN.14yN.5yN$21.18yN70.2K6.18yN
74.22yN$20.22yN67.2K5.22yN69.27yN$20.23yN4.3E66.23yN67.29yN$yN17.2IyN
.22yN70.2IyN.22yN66.4yN2I24yN$2yN15.I.IyN.23yN68.I.IyN.23yN64.4yNIyNI
25yN$3yN14.I4.20yN3D68.I4.16yN3D3yN58.2K5.4yNI26yN$4yN12.2I5.20yN.D
67.2I5.15yND4yN58.K.K6.2yN2IyN.2yN.20yN$.4yN19.19yND76.15yND3yN57.K.K
8.2yN7.19yN$2.4yN17.21yN75.21yN57.K17.21yN$3.4yN14.2IyN.15yN.4yN72.2I
yN.15yN.4yN72.2IyN.15yN.4yN$4.4yN12.I.IyN3.10yN5.4yN70.I.IyN3.10yN5.
4yN70.I.IyN3.10yN5.4yN$5.4yN11.I6.10yN6.4yN69.I6.10yN6.4yN69.I6.10yN
6.4yN$6.4yN9.2I5.13yN5.4yN67.2I5.13yN5.4yN67.2I5.13yN5.4yN$7.4yN14.
15yN5.4yN61.2K9.15yN5.4yN72.15yN5.4yN$8.4yN12.16yN6.4yN59.K.K8.16yN6.
4yN70.16yN6.4yN$9.4yN10.17yN7.4yN58.2K8.17yN7.4yN68.17yN7.4yN$10.4yN
10.16yN8.4yN55.2K11.16yN8.4yN68.16yN8.4yN$11.4yN10.13yN11.4yN53.K.K
12.13yN11.4yN68.13yN11.4yN$12.4yN9.5yN2I2yN.3yN12.4yN52.2K13.5yN2I2yN
.3yN12.4yN67.5yN2I2yN.3yN12.4yN$13.4yN10.3yN2I2yN2.4yN11.4yN68.3yN2I
2yN2.4yN3.2K6.4yN68.3yN2I2yN2.4yN11.4yN$14.4yN9.8yN3.2I12.4yN67.8yN3.
2I3.K.K6.4yN67.8yN3.2I12.4yN$15.4yN7.8yN4.I14.4yN47.2K16.8yN4.I5.2K7.
4yN65.8yN4.I14.4yN$16.4yN6.8yN5.3I2.2K8.4yN46.K.K15.8yN5.3I12.4yN64.
8yN5.3I12.4yN$17.4yN5.7yN8.I2.K.K8.4yN47.K15.7yN8.I13.4yN63.7yN8.I13.
4yN$18.4yN4.7yN12.K10.4yN46.K.K13.7yN23.4yN62.7yN23.4yN$19.4yN4.6yN7.
I16.4yN46.2K14.6yN7.I16.4yN62.6yN7.I16.4yN$20.4yN3.6yN6.I.I16.4yN61.
6yN6.I.I16.4yN61.6yN6.I.I16.4yN$21.4yN3.5yN6.I.I17.4yN61.5yN6.I.I17.
4yN61.5yN6.I.I17.2yN2K$22.4yN2.6yN4.2I.3I16.4yN60.6yN4.2I.3I16.4yN60.
6yN4.2I.3I16.yNK.K$23.10yN6.yN4.I16.4yN58.6yN6.yN4.I16.4yN58.6yN6.yN
4.I16.K$18.K5.10yN3.yN2IyN3I18.4yN57.7yN3.yN2IyN3I18.4yN57.7yN3.yN2IyN
3I$18.K6.11yN.yN2I.I21.4yN57.8yN.yN2I.I21.4yN57.8yN.yN2I.I$18.K7.12yN
26.4yN56.10yN26.4yN56.10yN7.K$27.11yN27.3yN55.3yN2I6yN27.4yN54.3yN2I
6yN6.K.K$21.2I5.10yN28.2yN49.2I5.2yN2I6yN28.4yN47.2I5.2yN2I6yN6.K.K$
22.I5.10yN29.yN50.I5.10yN29.4yN47.I5.10yN7.K$22.I.IyN2.11yN72.K6.I.IyN
2.11yN29.4yN46.I.IyN2.11yN$23.2IyN.12yN71.K.K6.2IyN.12yN30.4yN46.2IyN
.12yN$25.15yN71.2K8.15yN30.4yN47.15yN$25.16yN80.16yN30.4yN46.16yN$25.
16yN.2yN77.16yN.2yN28.3yN46.16yN.2yN$25.18yN2I76.18yN2I28.2yN46.18yN
2I$24.17yN.yN2I75.17yN.yN2I29.yN30.2K13.17yN.yN2I$23.4yN2.8yN.4yN.yN
75.4yN2.8yN.4yN.yN60.K2.K11.4yN2.8yN.4yN.yN$22.4yN4.7yN81.4yN4.7yN68.
K.K10.4yN4.7yN$21.4yN5.6yN16.2K63.4yN5.6yN70.K10.4yN5.6yN$20.4yN6.4yN
17.K.K62.4yN6.4yN82.4yN6.4yN$19.4yN5.I3yN19.2K62.4yN5.I3yN83.4yN5.I3yN
$18.4yN5.I.IyN83.4yN5.I.IyN83.4yN5.I.IyN$17.4yN6.I.I83.4yN6.I.I83.4yN
6.I.I$16.4yN8.I83.4yN8.I83.4yN8.I$15.4yN6.3I83.4yN6.3I83.4yN6.3I$14.
4yN7.I84.4yN7.I84.4yN7.I$13.4yN92.4yN92.4yN$12.4yN92.4yN92.4yN$11.4yN
92.4yN92.4yN$10.4yN92.4yN92.4yN$9.4yN92.4yN92.4yN8.K$8.4yN19.2K71.4yN
92.4yN8.K.K$7.4yN21.K70.4yN92.4yN9.K.K$29.3K70.4yN92.4yN11.K$29.K71.
4yN92.4yN$100.4yN92.4yN$99.4yN92.4yN9$90.E$90.E$90.E50.2yN$140.K3yN$
139.yNKyNK$138.2yN2K$137.4yN$136.4yN$135.4yN$134.4yN$133.4yN$132.4yN$
131.4yN$130.4yN$129.4yN$128.4yN$127.4yN$105.2D19.4yN$105.D.D13.3yN.4yN
$105.D14.8yN10.I$109.K10.7yN.yN7.3I$109.3K8.10yN5.I$112.K5.12yN5.2I$
111.2K4.14yN.5yN$117.18yN$116.22yN$116.23yN$114.2IyN.22yN$113.I.IyN.
23yN$113.I4.22yN$112.2I5.20yN$120.19yN$119.21yN$117.2IyN.15yN.4yN$
116.I.IyN3.10yN5.4yN$116.I6.10yN6.4yN$115.2I5.13yN5.4yN$121.15yN5.4yN
$120.16yN6.4yN$119.17yN7.4yN$110.2K.K6.16yN8.4yN$109.K2.2K7.13yN11.4yN
$109.2K10.5yN2I2yN.3yN12.3yNyL$123.3yN2I2yN2.4yN11.yNyJyF$123.8yN3.2I
12.yHyB$122.8yN4.I14.xX$122.8yN5.3I$122.7yN8.I$122.7yN$123.6yN7.I$
123.6yN6.I.I$124.5yN6.I.I$124.6yN4.2I.3I$123.6yN6.yN4.I$123.7yN3.yN2I
yN3I$124.8yN.yN2I.I$124.10yN$123.3yN2I6yN$117.2I5.2yN2I6yN$118.I5.10yN
$118.I.IyN2.11yN$119.2IyN.12yN$121.15yN$121.16yN$121.16yN.2yN$121.18yN
2I$120.17yN.yN2I$119.4yN2.8yN.4yN.yN$118.4yN4.7yN$117.4yN5.6yN$116.4yN
6.4yN$115.4yN5.I3yN$114.4yN5.I.IyN$113.4yN6.I.I14.2K$112.4yN8.I15.K$
111.4yN6.3I17.3K$110.4yN7.I21.K$109.4yN30.K.K$108.4yN32.2K$107.4yN$
106.4yN$105.4yN$104.4yN$103.4yN18.2K$102.4yN20.K$101.4yN20.K$100.4yN
21.K.K$99.4yN23.2K!
Scorbieturner

Code: Select all

x = 81, y = 61, rule = LifeHistory14
38.K$39.K$37.3KyN$38.4yN$39.4yN$40.4yN$41.4yN$42.4yN$43.4yN$44.4yN$
45.4yN$39.K6.4yN$38.K.K6.4yN$39.2K7.4yN$49.4yN$50.4yN$51.4yN$52.4yN$
53.4yN$17.2K5.2I11.I12.K3.4yN4.yN$17.2K4.yN2IyN9.I.I10.K.K3.4yN2.3yN$
24.3yN9.I.I11.K5.9yN5.2I7.2K$23.yN.yN9.2I.3I2.2I12.9yN4.I7.K.K$23.5yN
8.yN4.I2.I13.8yN.yNI.I8.K$23.6yN6.2IyN3I3.I.IyN2.4yN3.9yN.yN2I$23.8yN
4.2I.I6.2IyN2.5yN2.11yN$24.13yN10.8yN2.11yN$22.13yN12.21yN$21.15yN12.
19yN$21.15yN10.yN2.19yN$20.17yN.yN5.26yN$20.51yN$19.13yN2I13yN2I21yN$
18.14yN2I13yN2I23yN$17.2IyN3.49yN3.2K$16.I2.I4.47yN4.K.K$15.I.2I5.6yN
3.yN2.2yN2.31yN6.K$15.I7.6yN13.4yN2.7yN2.12yN8.2K$14.2I6.9yN17.6yN3.
11yN$21.4yN4.2I19.3yN5.7yN$20.4yN5.I21.yN4.3yN.4yN$19.4yN7.3I23.2I3.
2yN$18.4yN10.I24.I2.4yN$17.4yN33.3I3.yN2IyN$16.4yN7.3K24.I6.2I$15.4yN
$14.4yN$13.4yN$12.4yN$11.4yN$10.4yN$9.4yN$8.4yN$7.4yN$6.4yN$5.4yN$4.
4yN$3.4yN$2.4yN$.4yN$4yN!
I was forced to modify the gSoD (https://github.com/Hippo-69/CGoL\_gSoD) to be able to specify the glider output lane. Now following format is fine:

Code: Select all

x = 116, y = 106, rule = LifeHistory14
85.A$83.3A$82.A$72.2A8.2A$73.A5.5yN$41.2A11.A18.A.AyN.4yN$40.yN2AyN9.
A.A18.2AyN.6yN4.yN$41.3yN9.A.A20.10yN.yN2A$40.yN.yN9.2A.3A2.2A14.12yN
2A$40.5yN8.yN4.A2.A14.11yN.yN$40.6yN6.2AyN3A3.A.AyN2.4yN3.13yN$40.8yN
4.2A.A6.2AyN2.5yN2.12yN.2yN$41.13yN10.24yN2A$39.13yN12.24yN2A$38.15yN
12.20yN.yN.yN$38.15yN10.yN2.20yN$37.17yN.yN5.26yN$37.51yN$36.28yN2A
21yN$35.29yN2A21yN4.A$34.2AyN3.46yN3.3A$33.A2.A4.45yN2.A$32.A.2A5.14yN
2.29yN2.2A$32.A7.6yN.7yN5.4yN2.7yN.17yN$31.2A6.16yN10.6yN2.15yN$38.4yN
6.8yN8.6yN3.10yN.4yN$37.4yN6.yN.3yN.4yN6.4yN.yN4.14yN$36.4yN6.2A2.2A
2.4yN5.5yN6.12yN$35.4yN7.2AyN.2A3.4yN3.6yN6.11yN$34.4yN9.4yN5.4yN.7yN
6.11yN$33.4yN20.10yN8.9yN$32.4yN22.9yN8.9yN$31.4yN23.9yN3.2A3.9yN$30.
4yN23.10yN4.A3.9yN$29.4yN23.4yN.6yN4.A.A9yN$28.4yN23.4yN3.4yN6.2A2.6yN
$27.4yN23.4yN18.6yN$26.4yN23.4yN19.7yN$25.4yN23.4yN20.8yN2.2A$24.4yN
23.4yN19.12yNA.A$23.4yN23.4yN20.11yN3.A$22.4yN23.4yN21.5yN2A4yN3.2A$
21.4yN23.4yN22.5yN2A3yN$20.4yN23.4yN23.10yN$19.4yN23.4yN24.9yN$18.4yN
23.4yN25.9yN$17.4yN23.4yN27.8yN$16.4yN23.4yN27.8yN$15.4yN23.4yN29.6yN
$14.4yN23.4yN24.2A4.6yN$13.4yN23.4yN26.A4.6yN$12.4yN23.4yN27.A.AyN.7yN
$11.4yN24.3yN29.2AyN2.6yN$10.4yN59.8yN$9.4yN60.8yN$8.4yN62.8yN$6.L4yN
64.7yN$5.L4yN66.6yN7.2A$5L4yN67.7yN6.A$4.4yNL67.7yN3.yNA.A$3.4yNL68.
8yN2.yN2A$3.2AyNL69.11yN$3.2A.L69.11yN$6.L69.11yN$6.L70.11yN$6.L73.7yN
$79.8yN3.2A$78.8yN4.A$71.A7.7yN.yNA.A$71.3A4.8yN.yN2A$74.A3.10yN$73.
2A3.10yN$73.4yNA10yN$75.yNAyNA11yN$75.yNA2yNA11yN$73.4yN2A11yN$72.18yN
$73.11yN2.4yN$73.11yN3.4yN$74.8yN6.4yN$75.7yN7.4yN$75.6yN9.4yN$76.6yN
9.4yN$78.4yN10.4yN$79.yN13.4yN$78.3yN13.4yN$77.yN2AyN14.4yN$78.2A16.
4yN$97.4yN$98.4yN$99.4yN$100.4yN$101.4yN$102.4yN$103.4yN$104.4yN$105.
4yN$106.4yN$107.4yN$108.4yN$109.4yN$110.4yN$111.4yN$112.yN3E$113.E$
114.E!
(the glider allowing version does not rectrict gliders to reaction allowed, but now I can add reaction_forbidden to affect gliders as well).
Without the change, it was keeping to find wrong nearby lanes ... .
(I have not implemented restarting yet, so saved patterns are now just for debugging purposes, but if a very long promissing computation will be interrupted ... I would definitely implement the feature.)

Code: Select all

x = 237, y = 111, rule = LifeHistory14
47.2K.2K139.2K.2K$47.2K.K140.2K.K$50.K143.K$50.K.K141.K.K$51.2K142.2K
$62.I143.I$60.3I141.3I$59.I143.I$22.K.2K23.2I8.2I105.K.2K23.2I8.2I$
22.2K2.K23.I5.5yN105.2K2.K23.I5.5yN$18.2I5.2K4.I18.I.IyN.4yN103.2I5.
2K4.I18.I.IyN.4yN$17.yN2IyN9.I.I18.2IyN.6yN4.yN95.yN2IyN9.I.I18.2IyN.
6yN4.yN$18.3yN9.I.I20.10yN.yN2I95.3yN9.I.I20.10yN.yN2I$17.yN.yN9.2I.
3I2.2I14.12yN2I94.yN.yN9.2I.3I2.2I14.12yN2I$17.5yN8.yN4.I2.I14.11yN.yN
95.5yN8.yN4.I2.I14.11yN.yN$17.6yN6.2IyN3I3.I.IyN2.4yN3.13yN97.6yN6.2I
yN3I3.I.IyN2.4yN3.13yN$17.8yN4.2I.I6.2IyN2.5yN2.12yN.2yN95.8yN4.2I.I
6.2IyN2.5yN2.12yN.2yN$18.13yN10.24yN2I95.13yN10.24yN2I$16.13yN12.24yN
2I93.13yN12.24yN2I$15.15yN12.20yN.yN.yN93.15yN12.20yN.yN.yN$15.15yN
10.yN2.20yN96.15yN10.yN2.20yN$14.17yN.yN5.26yN94.17yN.yN5.26yN$14.51yN
93.51yN$13.28yN2I21yN93.28yN2I21yN$12.29yN2I21yN4.I87.29yN2I21yN4.I$
11.2IyN3.46yN3.3I86.2IyN3.46yN3.3I$10.I2.I4.45yN2.I88.I2.I4.45yN2.I$
9.I.2I5.14yN2.29yN2.2I86.I.2I5.14yN2.29yN2.2I$9.I7.6yN.7yN5.4yN2.7yN.
17yN86.I7.6yN.7yN5.4yN2.7yN.17yN$8.2I6.16yN10.6yN2.15yN87.2I6.16yN10.
6yN2.15yN$15.4yN6.8yN8.6yN3.10yN.4yN94.4yN6.8yN8.6yN3.10yN.4yN$14.4yN
6.yN.3yN.4yN6.4yN.yN4.14yN94.4yN6.yN.3yN.4yN6.4yN.yN4.14yN$13.4yN6.2I
2.2I2.4yN5.5yN6.12yN4.2K88.4yN6.2I2.2I2.4yN5.5yN6.12yN4.2K$12.4yN7.2I
yN.2I3.4yN3.6yN6.11yN6.K9.2K76.4yN7.2IyN.2I3.4yN3.6yN6.11yN6.K$11.4yN
9.4yN5.4yN.7yN6.11yN3.3K9.K2.K74.4yN9.4yN5.4yN.7yN6.11yN3.3K$10.4yN
20.10yN8.9yN3.K13.2K74.4yN20.10yN8.9yN3.K$9.4yN22.9yN8.9yN3.2K87.4yN
22.9yN8.9yN3.2K$8.4yN23.9yN3.2I3.9yN91.4yN23.9yN3.2I3.9yN$7.4yN8.K14.
10yN4.I3.9yN90.4yN8.K14.10yN4.I3.9yN$6.4yN8.K.K12.4yN.6yN4.I.I9yN90.
4yN8.K.K12.4yN.6yN4.I.I9yN$5.4yN10.2K11.4yN3.4yN6.2I2.6yN90.4yN10.2K
11.4yN3.4yN6.2I2.6yN13.2K$4.4yN23.4yN18.6yN89.4yN23.4yN18.6yN12.K2.K$
3.4yN23.4yN19.7yN87.4yN23.4yN19.7yN12.K2.K$2.4yN23.4yN20.8yN2.2I81.4yN
23.4yN20.8yN2.2I8.2K$.4yN23.4yN19.12yNI.I79.4yN23.4yN19.12yNI.I$4yN
23.4yN20.11yN3.I78.4yN23.4yN20.11yN3.I$3yN23.4yN21.5yN2I4yN3.2I77.3yN
23.4yN21.5yN2I4yN3.2I$2yN23.4yN22.5yN2I3yN83.2yN23.4yN22.5yN2I3yN$yN
23.4yN23.10yN83.yN23.4yN23.10yN$23.4yN24.9yN107.4yN24.9yN$22.4yN25.9yN
7.2K97.4yN25.9yN$21.4yN27.8yN6.K2.K95.4yN27.8yN$20.4yN27.8yN8.K.K94.
4yN27.8yN$19.4yN29.6yN10.K94.4yN29.6yN$18.4yN24.2I4.6yN104.4yN24.2I4.
6yN$17.4yN26.I4.6yN103.4yN26.I4.6yN$16.4yN27.I.IyN.7yN101.4yN27.I.IyN
.7yN$16.3yN29.2IyN2.6yN10.2K89.3yN29.2IyN2.6yN$50.8yN10.K2.K122.8yN$
50.8yN11.K.K122.8yN11.2K$51.8yN11.K124.8yN10.K.K$52.7yN137.7yN11.2K$
53.6yN7.2I129.6yN7.2I$53.7yN6.I130.7yN6.I$53.7yN3.yNI.I130.7yN3.yNI.I
$53.8yN2.yN2I131.8yN2.yN2I$53.11yN133.11yN$53.11yN133.11yN$53.11yN
133.11yN$54.11yN133.11yN$57.7yN137.7yN$56.8yN3.2I131.8yN3.2I$55.8yN4.
I131.8yN4.I5.2K$48.I7.7yN.yNI.I124.I7.7yN.yNI.I5.K.K$42.2K4.3I4.8yN.yN
2I125.3I4.8yN.yN2I8.K$41.K2.K6.I3.10yN130.I3.10yN10.K.K$42.K.K5.2I3.
10yN129.2I3.10yN11.2K$43.K6.4yNI10yN129.4yNI10yN$52.yNIyNI11yN129.yNI
yNI11yN$52.yNI2yNI11yN128.yNI2yNI11yN$50.4yN2I11yN127.4yN2I11yN$49.
18yN126.18yN$50.11yN2.4yN127.11yN2.4yN$50.11yN3.4yN126.11yN3.4yN$51.
8yN6.4yN126.8yN6.4yN$52.7yN7.4yN126.7yN7.4yN$52.6yN9.4yN125.6yN9.4yN$
53.6yN9.4yN125.6yN9.4yN$55.4yN10.4yN126.4yN10.4yN$56.yN13.4yN126.yN
13.4yN$55.3yN13.4yN118.3K3.3yN13.4yN$54.yN2IyN14.3yN123.yN2IyN14.3yN$
55.2I16.2yN124.2I16.2yN$74.yN143.yN15$90.3K141.3K$90.K143.K$91.K143.K
!
Semisnarks it could be hard to use on clock paths ... you need to know the state ...

Code: Select all

x = 108, y = 168, rule = LifeHistory14
49.K$47.K.KyN$48.2K2yN$49.4yN$50.4yN36.yN$51.4yN34.2yN$52.4yN32.3yN$
53.4yN30.4yN$54.4yN28.4yN$55.4yN26.4yN$56.4yN24.4yN$57.4yN22.4yN$58.
4yN20.4yN$59.4yN18.4yN$60.4yN16.4yN$61.4yN14.4yN$62.4yN12.4yN$63.4yN
10.4yN$64.4yN8.4yN$65.4yN6.4yN$66.4yN4.4yN$67.4yN2.4yN$61.2I5.8yN$62.
I5.7yN$62.I.IyN.7yN$63.2IyN.9yN$65.11yN.2yN7.2K$65.13yN2I5.K2.K$65.
13yN2I5.K.K$65.10yN2.2yN7.K$62.2yN.4yN2E3yN$61.2I6yN2E3yN6.2K$61.2IyN
.3yN2F4yN6.K.K$62.yN.4yN2F4yN7.2K$67.7yN$68.5yN.I$66.4yN3.I.I$66.2I6.
I$67.I$64.3I$64.I5.2K$69.K2.K$69.K2.K$70.2K76$87.K$87.K$87.K3$2.K63.K
$K.KyN60.K.KyN$.2K2yN60.2K2yN$2.4yN60.4yN$3.4yN36.yN23.4yN36.yN$4.4yN
34.2yN24.4yN34.2yN$5.4yN32.3yN25.4yN32.3yN$6.4yN30.4yN26.4yN30.4yN$7.
4yN28.4yN28.4yN28.4yN$8.4yN26.4yN30.4yN26.4yN$9.4yN24.4yN32.4yN24.4yN
$10.4yN22.4yN34.4yN22.4yN$11.4yN20.4yN36.4yN20.4yN$12.4yN18.4yN38.4yN
18.4yN$13.4yN16.4yN6.K33.4yN16.4yN$14.4yN14.4yN7.K34.4yN14.4yN$15.4yN
12.4yN8.K35.4yN12.4yN$16.4yN10.4yN46.4yN10.4yN$17.4yN8.4yN7.K40.4yN8.
4yN$18.4yN6.4yN7.K.K40.4yN6.4yN$19.4yN4.4yN8.2K42.4yN4.4yN$20.4yN2.4yN
54.4yN2.4yN$14.2I5.8yN3.2K44.2I5.8yN$15.I5.7yN4.K.K44.I5.7yN$15.I.IyN
.7yN6.2K44.I.IyN.7yN$16.2IyN.9yN51.2IyN.9yN$18.11yN.2yN50.11yN.2yN3.
2K$18.13yN2I49.13yN2I2.K.K$18.13yN2I49.13yN2I3.K.K$18.10yN2.2yN50.10yN
2.2yN5.K$15.2yN.4yN2D3yN52.2yN.4yN2D3yN$14.2I6yN2D3yN51.2I6yN2D3yN$
14.2IyN.3yN2G4yN51.2IyN.3yN2G4yN$15.yN.4yN2G4yN52.yN.4yN2G4yN$20.7yN
57.7yN$21.5yN.I57.5yN.I$19.4yN3.I.I54.4yN3.I.I$19.2I6.I55.2I6.I$20.I
63.I$17.3I61.3I$17.I63.I3$97.3K!
Snark (from another post)

Code: Select all

x = 206, y = 44, rule = LifeHistory14
204.K$203.K.K$203.2K2$189.2K$178.yN9.K2.K$178.2yN9.K.K$49.yN61.yN66.
3yN9.K$49.2yN60.2yN65.4yN20.2K$49.3yN59.3yN65.4yN13.I4.K2.K$.yN47.4yN
58.4yN65.4yN10.3I5.K.K$.2yN47.4yN13.I44.4yN13.I6.K44.4yN8.I9.K$.3yN
47.4yN10.3I45.4yN10.3I6.K45.4yN7.2I$.4yN47.4yN8.I49.4yN8.I9.K46.4yN3.
5yN$2.4yN13.I33.4yN7.2I49.4yN7.2I56.4yN2.3yN$3.4yN10.3I8.K25.4yN3.5yN
50.4yN3.5yN57.9yN7.2I$4.4yN8.I10.K.K25.4yN2.3yN16.3K34.4yN2.3yN60.8yN
8.I$5.4yN7.2I8.K.K27.9yN7.2I44.9yN7.2I51.10yN3.yN.I.2I$6.4yN3.5yN9.K
29.8yN8.I45.8yN8.I51.7yN2I2yN.yN3I2.I$7.4yN2.3yN42.10yN3.yN.I.2I43.
10yN3.yN.I.2I48.7yN2I3yNIyN2.2I$8.9yN7.2I32.7yN2I2yN.yN3I2.I43.7yN2I
2yN.yN3I2.I48.12yN4I$9.8yN8.I32.7yN2I3yNIyN2.2I44.7yN2I3yNIyN2.2I47.
2IyN.7yN3.2yN.I$10.10yN3.yN.I.2I29.12yN4I46.12yN4I48.I.IyN.7yN2.yN3I$
10.7yN2I2yN.yN3I2.I27.2IyN.7yN3.2yN.I44.2IyN.7yN3.2yN.I48.I5.4yN4.I$
10.7yN2I3yNIyN2.2I27.I.IyN.7yN2.yN3I44.I.IyN.7yN2.yN3I48.2I5.4yN5.5I$
10.12yN4I29.I5.4yN4.I47.I5.4yN4.I57.4yN10.I$8.2IyN.7yN3.2yN.I28.2I5.
4yN5.5I41.2I5.4yN5.5I51.4yN9.I$7.I.IyN.7yN2.yN3I35.4yN10.I47.4yN10.I
50.4yN10.2I$7.I5.4yN4.I37.4yN9.I40.2K6.4yN9.I51.4yN$6.2I5.4yN5.5I31.
4yN10.2I38.K2.K4.4yN10.2I49.4yN$12.4yN10.I30.4yN4.2K45.K2.K3.4yN61.4yN
$11.4yN9.I31.4yN4.K.K46.2K3.4yN5.K55.4yN$10.4yN10.2I29.4yN5.2K51.4yN
5.K.K53.4yN$9.4yN41.4yN10.2K46.4yN5.K.K53.4yN$8.4yN41.4yN11.2K45.4yN
7.K53.2K2yN$7.4yN41.4yN58.4yN61.KyNKyN$6.4yN41.4yN58.4yN61.3yNK$5.4yN
41.4yN58.2K2yN62.3yN$4.4yN6.2K33.2K2yN58.KyNKyN$3.4yN8.K32.KyNKyN59.
2yNK$2.4yN9.K.K30.2yNK$.2K2yN11.2K$KyNKyN$2yNK!
Last edited by Hippo.69 on August 14th, 2026, 2:29 am, edited 27 times in total.
User avatar
speedydelete
Posts: 115
Joined: October 7th, 2025, 9:44 pm
Contact:

Re: 0E0P constructions

Post by speedydelete »

Hippo.69 wrote: April 18th, 2026, 1:33 pm I do not want to sound rude, but I would prefere to finish the current proposed solution then rebuilding the construction from scratch. Of couse if someone else decides to do and debug the changes, I would be happy it is working ... .
I had a new idea for massively increasing construction capability. This one does not require modification to pslmake... We can use minimum spacing 43, because outside the metacell the stream is only being reflected using Snarks, right? HNE16T14 can inject gliders with spacings of 38 before, and 60 after:

Code: Select all

x = 71, y = 68, rule = B3/S23
obo$b2o$bo22$25bo$26b2o$25b2o14$55bo10bo$54bobo7b3o$54bobo6bo$52b3ob2o
5b2o$23b2o11bo14bo$23b2o10bobo14b3ob2o$35bobo16bob2o$34b2ob3o$40bo26b
o$34b2ob3o26bobo$34b2obo29bo6$69b2o$31b2o13b2o21b2o$31b2o13b2o$16b2o$
15bo2bo$14bob2o$14bo$13b2o$28b2o$19b3o6bo$21bo7b3o$20bo10bo!
We use multiple sub-nuclei inside the nucleus to store multiple glider streams. This makes the injection circuitry... complicated, but I think we can get away with as little as 4 sub-nuclei. Here's a prototype:

Code: Select all

x = 575, y = 566, rule = B3/S23
370b2o$370bobo$372bo4b2o$368b4ob2o2bo2bo$368bo2bobobobob2o$371bobobob
o$372b2obobo$376bo2$362b2o$363bo7b2o$363bobo5b2o$364b2o5$223bo$223bob
o$223b2o149b2o$374bo$375b3o$377bo17$334b2o$335bo$333bo$333b5o14b2o$338b
o13bo$335b3o12bobo$334bo15b2o$334b4o$332b2o3bo3b2o$331bo2b3o4b2o$331b
2obo$334bo$334b2o3$342b2o$343bo$340b3o$340bo5$304b2o$304bobo$306bo4b2o
$302b4ob2o2bo2bo$302bo2bobobobob2o$305bobobobo$306b2obobo$310bo2$233b
o62b2o$232bo64bo7b2o$232b3o62bobo5b2o$298b2o7$308b2o$308bo$309b3o$311b
o6$200bo$200b3o$203bo$202b2o3$194b2o$194bo$191b2obo$191bo2b3o4b2o$192b
2o3bo3b2o$194b4o$194bo15b2o$195b3o12bobo$198bo13bo$193b5o14b2o$193bo$
195bo$194b2o4$289bo11b2o$288bobo10b2o$255b2o31bobo$256bo25b2o2b3ob2o$
244b2o10bobo23bo2bo$245bo11b2o21bobo3b3ob2o$245bobo32b2o6bob2o$246b2o
6$278b2o13b2o$278b2o13b2o$179b2o127b2o$179bobo125bo2bo$181bo4b2o120b2o
bo$177b4ob2o2bo2bo121bo$177bo2bobobobob2o53bo67b2o$180bobobobo54b3o52b
2o$181b2obobo53bo56bo$185bo54b2o27b2o23b3o$269bo24bo$171b2o97b3o$172b
o7b2o81b2o7bo$172bobo5b2o81bo$173b2o89b3o$266bo$230b2o$229bobo5b2o$229b
o7b2o$228b2o2$183b2o57bo$183bo54b2obobo$184b3o50bobobobo$186bo47bo2bo
bobobob2o$234b4ob2o2bo2bo$238bo4b2o$236bobo$236b2o13$143b2o$144bo$142b
o$142b5o14b2o$147bo13bo$144b3o12bobo$143bo15b2o$143b4o$141b2o3bo3b2o$
140bo2b3o4b2o$140b2obo$143bo$143b2o3$151b2o$152bo$149b3o$149bo2$565bo
$563b3o$562bo$113b2o447b2o$113bobo$115bo4b2o$111b4ob2o2bo2bo446b2o$111b
o2bobobobob2o447bo$114bobobobo450bob2o$115b2obobo442b2o4b3o2bo$119bo387b
2o54b2o3bo3b2o$507bo60b4o$105b2o402bo44b2o15bo$106bo7b2o373b2o14b5o43b
obo12b3o$106bobo5b2o374bo13bo48bo13bo$107b2o381bobo12b3o44b2o14b5o$491b
2o15bo63bo$505b4o61bo$500b2o3bo3b2o59b2o$500b2o4b3o2bo$508bob2o$508bo
$117b2o388b2o$117bo$118b3o$120bo378b2o$499bo$500b3o$502bo3$9bo$9b3o$12b
o$11b2o2$470bo$3b2o463b3o$3bo463bo$2obo463b2o$o2b3o4b2o$b2o3bo3b2o$3b
4o$3bo15b2o$4b3o12bobo$7bo13bo$2b5o14b2o434b2o$2bo453bobo5b2o$4bo451b
o7b2o$3b2o450b2o2$469bo$465b2obobo$98bo11b2o352bobobobo$97bobo10b2o349b
o2bobobobob2o$64b2o31bobo361b4ob2o2bo2bo$65bo25b2o2b3ob2o364bo4b2o$53b
2o10bobo23bo2bo368bobo$54bo11b2o21bobo3b3ob2o362b2o$54bobo32b2o6bob2o
$55b2o6$87b2o13b2o$87b2o13b2o$117b2o$116bo2bo$117b2obo$120bo$52bo67b2o
$50b3o52b2o$49bo56bo385bo$49b2o27b2o23b3o384b3o$78bo24bo385bo$79b3o406b
obo$72b2o7bo406bobo$72bo416bo$73b3o$75bo$39b2o$38bobo5b2o$38bo7b2o425b
2o$37b2o434b2o2$51bo$47b2obobo$46bobobobo440b2o$43bo2bobobobob2o437bo
bo$43b4ob2o2bo2bo439bo$47bo4b2o432b2o7b2o$45bobo438b2o$45b2o$476bob2o
$474b3ob2o$473bo$474b3ob2o$476bobo$476bobo$477bo2$476bo$476b3o$479bo$
478b2o$486b2o$486b2o6$497b2o$497bo$495bobo$495b2o3$500b2o$500bo$498bo
bo$498b2o4$374bo$372b3o102b2o$371bo106bo$371b2o102b3o$475bo2$379b2o$380b
o$380bob2o$372b2o4b3o2bo$316b2o54b2o3bo3b2o$316bo60b4o$318bo44b2o15bo
$298b2o14b5o43bobo12b3o$299bo13bo48bo13bo$299bobo12b3o44b2o14b5o$300b
2o15bo63bo$314b4o61bo$309b2o3bo3b2o59b2o$309b2o4b3o2bo$317bob2o$317bo
$316b2o3$308b2o$308bo$309b3o$311bo8$279bo$277b3o$276bo$276b2o7$266b2o
$265bobo5b2o$265bo7b2o$264b2o2$278bo$274b2obobo$273bobobobo$270bo2bob
obobob2o$270b4ob2o2bo2bo$274bo4b2o$272bobo$272b2o16$301bo$299b3o$298b
o$297bobo$297bobo$298bo5$282b2o$282b2o4$302b2o$302bobo$304bo$295b2o7b
2o$295b2o2$285bob2o$283b3ob2o$282bo$283b3ob2o$285bobo$285bobo$286bo2$
285bo$285b3o$288bo$287b2o$295b2o$295b2o6$306b2o$306bo$304bobo$304b2o3$
309b2o$309bo$307bobo$307b2o5$286b2o$287bo$284b3o$284bo62$222bo$222b3o
$225bo$224b2o$239b2o$239bo$236b2obo$235bo2bo$236b2o$206b2o13b2o$183b2o
21b2o13b2o$183b2o6$186bo29bob2o$185bobo26b3ob2o$186bo26bo$214b3ob2o$196b
2obo16bobo$196b2ob3o14bobo10b2o$202bo14bo11b2o$189b2o5b2ob3o$190bo6bo
bo$187b3o7bobo$187bo10bo5$254bo$254b3o$257bo$256b2o$271b2o$271bo$268b
2obo$267bo2bo$268b2o$238b2o13b2o$215b2o21b2o13b2o$215b2o6$218bo29bob2o
$217bobo26b3ob2o$218bo26bo$246b3ob2o$228b2obo16bobo$228b2ob3o14bobo10b
2o$234bo14bo11b2o$221b2o5b2ob3o$222bo6bobo$219b3o7bobo$219bo10bo!
As you can see, we can inject gliders in at spacing 64hd, and they are outputted into the merge circuit at spacing 64hd, allowing for hashlife-friendliness. The inside of the nuclei are also hashlife-friendly, kind of. The spacings should alternate between 63hd and 65hd, so it doesn't have to store that many gliders (pure 64hd would require color changing!).

With this construction technique, we can still use the new optimized Snarkmaker, so construction is still very efficient. I think the nucleus could be made much much smaller, perhaps as much as 16x (4x on both sides!) due to using multiple elbows as well as a much smaller min spacing. My search program is very fast and should be able to find a lot for sc43!

Of course, this makes the subroutine loops much more complex, but I think we can do it!

What do you think?

Edit: EvinZL is working on a new compiler for slow salvo -> single channel. They claim it will be extremely efficient, so we no longer need to rely on slmake. I am going to start designing a combined full compiler that automatically calls (p)slmake to generate slow salvos!
I manage the 5S project, which collects all known spaceship speeds in certain rulespaces.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

speedydelete wrote: April 19th, 2026, 1:17 pm We can use minimum spacing 43, because outside the metacell the stream is only being reflected using Snarks, right?
Not at all, we expect the construction would use the child cell reflectors during their build, morever for space allocations I expect to use splitters to create pair of crab double stretches at the same time ...

Building loop of length say 2^{28} is not cheap. Why would we do it several times? ... here are another my notes ... seems you have not looked at the example so far ... the example contains with very high probability smaller version of the cell then we will finally finish, but you have to look at it to imagine the proportions. The example you have presented contains close antiparallel streams of gliders. This is exactly what was the calcymans solution problem. Try open the only finished 0p0emetacell. Make 2^8 steps 10 times to imagine how slow hashlife is in these cases.
apg wrote: October 31st, 2024, 6:22 am
Pavgran wrote: October 31st, 2024, 5:23 am
The DNA loop we use maximizes distance between antiparallel streams of gliders. Having more loops would definitely decrease these distances significantly.
(we would pay for for hashlife friendliness ... it is complicated allocation of the 18 construction sites. 17 of the 18 construction sites are relativly compactly populated (the low frequency clock makes 18th site look rather like 2 separate sites during the construction ... we are far from building it ... the required DNA loop length should be determined and we could decide to split it to 2 ... to make the clocks of even longer period)

Code: Select all

Cell parts:
1) NE/SE/SW/NW build paths:         Conditionally only starting block/speboe (0 state case) ... maybeBlock with huge envelope SoD
2) NE/SE/SW/NW kernel opening path: Conditionally not used if we are not the parent (state 0 or another cell build the shell) ... maybeTurn SoD
                                    It opens transfer path and closes build path. Close of the build path is probably unnecessary as the eater on the child cell entrance would play its role anyways.
                                    Closing of the build path could be done after the DNA is removed (using SoD ... instead of destroying replacement eater by SoD we could destroy the cell output path at all.
                                    With the destroyal backwards it is preferable method. (Unfortunately due to transfer sychronization two paths contain snark and two scorbie final reflector.
3) NE/SE/SW/NW build entry point:   Eater, block removing speboe from entering 44 move. Block conditionaly missing if attempt to build from another cell was executed. (maybeblock SoD with small envelope)
                                    Shell construction at early phases (definitely during the first DNA loop) should build it on all child entrances, the eater on the entrance from the parent should be created in sync with 
                                    kernel openning probably eater seed should be waiting there and the kernel opening signal split to activate the seed (in child) and destroy the eater blocking the filling path (in parent).
2) NE/SE/SW/NW transfer paths:      Conditionaly opened before SoD start, maybeTurn invokes openning (DNA was already discarder so maybeTurn could sent empty DNA during SoD and cleans the circuitry).
3) DNA insert path:                 Closed by an ott path by first glider in the loop (Pauli principle ...)
4) DNA loop:                        Must be circled by gliders with 2^X period. Has branches to all the mentioned paths.
5) NE/SE/SW/NW state transfer paths Signal is duplicated and goes in straight lane, crosses DNA loop so it would force carefull timing in the mentioned sections ... 
                                    these are constant 7 forbidden intervals of 37 ticks per cell side
6) from SW/NW/NE/SE state transfer paths crosses DNA loop so it would force carefull timing in the mentioned sections ... 
                                    these are constant 7 forbidden intervals of 37 ticks per cell side (So 2*28 37 ticks interval are forbidden in the DNA loop this way)
7) central clock start paths        started from all alive neighbors, conditionaly not passed if the neighbor is dead ... should be maybeSoD traveled
8) state computing path             eater would be removed and created on the path to cut subchunk of constant boundaries mod 1024 ticks addressed by states of the neighbors 2^{4}-1 subchunks correspond to life neighbors
                                    (nonzero combinations of states 0 and 7), only 2^9 possible combinations of states (0-6) be cutting ... so 527 intervals of length 1024 should be carefully timed to have exact required 
                                    number of gliders in the cut interval. There is usually big flexibility in sc90 recipes (original set of recipes used flexible gaps between exactly timed pairs of gliders.
                                    We probably could use the cutting boundary to either cut the pair or not. If there will be problem to split given recipe, we can probably add some dummy 
                                    arm moves to generate required spacing. There is probably no difficulty to generate cuts with small number of gliders (corresponding to addressing by 2^{4}-1 live states), 
                                    on the contrary there will be enough spacing between 2^9 possibilities of (0-6) state combinations which would in 92 cases require 7 gliders. That must be easy to arrange.
                                    (Of course there is an alternative to have part of DNA dedicated to the state reading ... when the construction is short enough to allow it ... or we can combine the methods ...
                                    but having salvo with some flexibility would probably work well ... and I bet applying the restrictions would not cause too much problems.
9) 0 state speedup path             conditionally should be traversed by SoD of other states as well ... this is why there is an eater at the end of long clock path (to be destroyed by 0 state speedup path)
10) 1-6 states speedup path         conditionally should be traversed by SoD of other states as well ... state 7 should traverse it before 0 speedup path (to use the eater mentioned there)
11) long clock path                 should be period multiplied to be traveled (end of it) once per DNA loop this allows easy easy switching at constant intervals per full DNA cycle.
An example of synchronization problem solution can be seen at ... (current solution does not use the long path to stop DNA loop input, but rather redirecting one glider in proximity of the loop end ... as is proposed there).
Hippo.69 wrote: November 6th, 2024, 7:10 pm
I have mentioned only the high level components, of course the devil is in the details ... to sync to 2^X I have ended with two bandersnatchers and a herschel track ... near the insertion point. You can see there is mentioned a lot of output branches from the DNA loop ... they definitely require splitters.
Last edited by Hippo.69 on April 20th, 2026, 6:41 am, edited 6 times in total.
User avatar
speedydelete
Posts: 115
Joined: October 7th, 2025, 9:44 pm
Contact:

Re: 0E0P constructions

Post by speedydelete »

Hippo.69 wrote: April 19th, 2026, 6:06 pm Not at all, we expect the construction would use the child cell reflectors during their build, morever for space allocations I expect to use splitters to create pair of crab double stretches at the same time ...
Wouldn't the child cell reflectors be Snarks? Also, if they aren't, we can simply use If russellsprouts makes an optimized crabstretcher recipe, then it's probably more efficient to use two copies of it.
Hippo.69 wrote: April 19th, 2026, 6:06 pm Building loop of length say 2^{28} is not cheap. Why would we do it several times? ... here are another my notes ... seems you have not looked at the example so far ... the example contains with very high probability smaller version of the cell then we will finally finish, but you have to look at it to imagine the proportions. The example you have presented contains close antiparallel streams of gliders. This is exactly what was the calcymans solution problem. Try open the only finished 0p0emetacell. Make 2^8 steps 10 times to imagine how slow hashlife is in these cases.

The DNA loop we use maximizes distance between antiparallel streams of gliders. Having more loops would definitely decrease these distances significantly.
(we would pay for for hashlife friendliness ... it is complicated allocation of the 18 construction sites. 17 of the 18 construction sites are relativly compactly populated (the low frequency clock makes 18th site look rather like 2 separate sites during the construction ... we are far from building it ... the required DNA loop length should be determined and we could decide to split it to 2 ... to make the clocks of even longer period)
We can build a meta-subroutine loop that then builds subroutine loops that then builds the parts! The glider streams can be moved much farther away. Because we are encoding so much more information with sc43, we can have a much lower density.

Of course, we should complete the current metacell design before using sc43.

My program can also optimize sc90 of course, but it is worse at doing so... I can try. Should I start doing that?

Edit: Would there be any advantage in using parallel glider streams?
I manage the 5S project, which collects all known spaceship speeds in certain rulespaces.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

speedydelete wrote: April 19th, 2026, 7:26 pm
Hippo.69 wrote: April 19th, 2026, 6:06 pm Not at all, we expect the construction would use the child cell reflectors during their build, morever for space allocations I expect to use splitters to create pair of crab double stretches at the same time ...
Wouldn't the child cell reflectors be Snarks? Also, if they aren't, we can simply use If russellsprouts makes an optimized crabstretcher recipe, then it's probably more efficient to use two copies of it.
Hippo.69 wrote: April 19th, 2026, 6:06 pm Building loop of length say 2^{28} is not cheap. Why would we do it several times? ... here are another my notes ... seems you have not looked at the example so far ... the example contains with very high probability smaller version of the cell then we will finally finish, but you have to look at it to imagine the proportions. The example you have presented contains close antiparallel streams of gliders. This is exactly what was the calcymans solution problem. Try open the only finished 0p0emetacell. Make 2^8 steps 10 times to imagine how slow hashlife is in these cases.

The DNA loop we use maximizes distance between antiparallel streams of gliders. Having more loops would definitely decrease these distances significantly.
(we would pay for for hashlife friendliness ... it is complicated allocation of the 18 construction sites. 17 of the 18 construction sites are relativly compactly populated (the low frequency clock makes 18th site look rather like 2 separate sites during the construction ... we are far from building it ... the required DNA loop length should be determined and we could decide to split it to 2 ... to make the clocks of even longer period)
We can build a meta-subroutine loop that then builds subroutine loops that then builds the parts! The glider streams can be moved much farther away. Because we are encoding so much more information with sc43, we can have a much lower density.

Of course, we should complete the current metacell design before using sc43.

My program can also optimize sc90 of course, but it is worse at doing so... I can try. Should I start doing that?

Edit: Would there be any advantage in using parallel glider streams?
Current priority tasks are ...
A) in the envelope recipes for individual "path" components with SoD sending gliders in opposite direction.
... it includes C) finding cheap SoD's for the components
Hippo.69 wrote: April 18th, 2026, 11:45 pm
B) Converting SoD pattern of the cell to use these standardized components ... meaning to prefer destruction by backward traveling signal (the spacing could be off (A) reaction envelopes), but it probably is solvable by rearranging components)
D) Implementing the allocation and shell entrance parts of the single lane recipe (Proably raw allocation stage
Hippo.69 wrote: January 1st, 2025, 10:35 am
and fine tuning would be done separately) ... I have stopped at January 2025 on the planning what to do during crabstretching before the fuses are ignited ... (roughly 2^19 time gap) ...
E) Plan connection between shell spiral paths to build whole shell at once, plan to destroy the inbetween pieces and the shell build end

I expect there will be only small portions to be build by speboe recipes ... mainly the central clock, and state reading clock and its neighborhood.
(Paths with period multipliers are definitely not good for in envelope constructions.) The sync specialised hershell track, ott branching to SoD
opposite path starts, conditional SoD's.

Then planning of the oriented construction would follow (actually fine tuning of D) depends on the plan) ... the DNA loop would be again built mainly by in envelope salvas, but we should plan switching off/on branches after the splitters. The DNA filling path has highest priority, when DNA loop is finisehed, the first glider should be redirected by an ott to destroy the DNA filling path just after it's younger copy enters the loop.
I expect the central clocks and logics would be built last from the new state calculation stream. The central part is still huge enough that 90 degree recipes would be probably the solution ... with temporal bending there and there.

But the shell build is definitely the milestone ...
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

Anivec wrote: April 16th, 2026, 2:50 pm
Hippo.69 wrote: April 16th, 2026, 2:33 pm
I am not near my computer, I will give the rule definitions and convertors. Having plain life file would lose too much info…
I still am not sure with the salvo selection, it would be hard to incorporate the timing…
Can you just use LifeHistory so that nobody else has to download the rule table?
So I have finally decided to more think about the rules ... and I would probably debug the 0p0e metacell in another ruleset ... LifeHistory64 (included in the git).
There are mark state pairs in higher amount ... allowing to distinguish parts of the circuit by their logic. I have allowed spaceships (gliders) to be reflected while maintaining their state (and state of the reflecting circuit) (It's hard to predict states after collision of two spaceships of different states), so we can mark leading gliders of the subsalvas if it would help in debugging ... . I have downgrading conversion unifying some states ...

Now I am going to parametrize the script to be able to rearange the components more efficiently ... at first to add a parameter to able to shring the DNA loop outer dimension by prolonging its inner dimensions (to maintain the length) ... it has consequences to send/receive DNA path lengths so outputs and inputs in the shell would be shifted accordingly ... of course we want to minimize the change as it goes against the hash friendliness.

This would probably help to match the bigger "envelope sizes required".

Wow
russellsprouts wrote: April 24th, 2026, 8:48 pm
EvinZL wrote: April 26th, 2026, 1:00 am
This makes single lane technology really efficient. This would be very handy for building the central clock logic ... by a 90 degree arm salvo.
So would the 2^{24} be enough for the DNA length?
EvinZL wrote: April 28th, 2026, 3:28 pm The classic designs with the additional glider paths definitely do come out more expensive that Opp gliders or what I've bene doing becuase of the additional one-time circuitry to keep the trigger gliders synchronized. My spaceships make a return glider from the construction arm as a trigger, primarily to avoid this, and make it easy. Opp gliders would be nice especially with long glider paths; and given the results posted and the fact that the timing is not important it seems Opp glider destructions are fairly cheap as well.

But now with 3 fast glider/slow glider construction cheapening the actual circuitry can easily be outweighed by other costs associated to running the arm. Parallel glider saves somewhat on arm operations but I don't think it is worth it. I did look into Opp gliders for the demonoid but I did not see a geometry to easily produce them, so then it would probably lose on the associated arm cost for this specific use case. And especially becuase the Demonoid circuitry is small, it seems that the current destruction solution is best.
The Opp SoD for 0e0p metacell is almost done (last touches near the central clocks are needed)
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

OK, with the new single lane technology the plans how to build 0e0p metacell changes rapidly.

There necessarily must be an allocation phase, but what about building long term 90 degree redirector ... aimed to faaaaaar away simkin guns.
We can build ott's by one, switch to using the other and send synchonized gliders to do the allocation.

... What would be usefull? Fast salvo to create eater stopping Simkin's gliders ... to preserve "stack position" while using the other arm.
... Sleeping patterns for such eaters to be hit from nearby lane ... to restore old stack position.

Such a universal arm could be even more efficient in building shell then using snarkmakers on the paths ... so finally starting by building EECCA ... use it to build the shell ... then destroy the EECCA, switch to the oriented build ... and start by building EECCA again (when allocation is not needed there will be no point to build arm aimed to both directions ...)

How the redirector would look like?
We can build an G to Eater on two exits, but that would be rather expensive. (We can use p8 technology as threre is no problem to swith at required mod 8 tick, so that could be cheaper).
I would like something like shifting block to stop/let continue dependent hershell ... similarly like direction signal is filtered in ECCA1 of unidimensional ship ... but with components with repeat time 90.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

Seems I have debugged SoDOpp changes to the 0e0p metacell design:
Here are demo versions ...
There is no build code included so neighboring cells are present from the start. SE, SW, NW are simulated as build+filled from another neighbor, so we have already included "DNA", which is presented by a single glider in the demo. NE neighbor is simulated as to be build by the centrall cell.
The DNA transfer is simulated by 2 added ott's which redirect the construction glider back to present ready to be filled signal from the NW neighbor.

There are 3 demo examples ... all started by mimicking state signal arival from a neighbor SE cell (previous generation)... activating the central clock.
*Dead example simulates the Dead speedup and construction not started SoD case.
*Alive example simulates the main generation of alive cell (waiting few cycles to prolonging main display).
You can see DNA synchronization of NW neighbor with remaining neighbors which were synchronized with the centrall cell.
*Middle example simulates in between generation ... having shorter life. ... and I have decided to change the demo such that DNA transfer is to all 4 neighbors there ... to demonstrate the DNA synchronization.
CellLifeDead.mc
(70.58 KiB) Downloaded 18 times
CellLifeAlive.mc
(71.43 KiB) Downloaded 23 times
CellLifeMiddle.mc
(71.46 KiB) Downloaded 19 times
More interesting demo would start the construction till the moment the construction is blocked at the neighbor cell shell ... but in that case we would not see the DNA transfer. ... For SoD testing it is much more interesting to test different state options ... construction did not start at all / construction was stopped by reaching the already existing cell / neighbor shell was built and open kernell signal was returned back to fill the DNA.
All different speedups should be tested as well as clock activation from all 4 neighbors.

The 3 examples include all these tests (clocks of neighbors are activated from all 4 possibe directions). The start of construction is simulated by removal of the 4 construction targets in the Middle/Alive case.

I have to recheck if the Alive cell vanishes entirely before a Middle neighbor starts building its shell. We could add a glider absorber to the central clock if there is a problem ...
Last edited by Hippo.69 on May 2nd, 2026, 3:28 am, edited 1 time in total.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

Hippo.69 wrote: April 30th, 2026, 7:31 pm I have to recheck if the Alive cell vanishes entirely before a Middle neighbor starts building its shell. We could add a glider absorber to the central clock if there is a problem ...
CellLifeMiddleStart.mc
(74.71 KiB) Downloaded 21 times
OK according to the already replaced attachment ... the Middle State would be activated at generation 262 840 000 (the clock has much higher period so the rounding does not matter), its alive neighbour SoD would essentially (the part which could collide with the construction) end at generation 309 027 000.
The NW build is allowed at 285 913 000, the building signal arrives to the construction speboe at 288 712 000. So if the construction would reach the cell in 20 315 000 ticks, there could be a conflict. (The cell is opened for the construction, but a single glider would cross the site hitting last snark with OppSoD there.)

Hmm, this is for planned DNA loop length 2^{24}=16 777 216, so definitely we expect we would start the construction during the first 20 315 000 ticks.
So there would be an additional absorber, the question is ... block/tub/boat (or 2 of them) ... giving us 1/2/3 additional DNA loops ... depending on the number of DNA loops required to finish the shell ... and open the transfer process.

Similarly there could be need for an additional absorber after the (last) DNA transfer started before the DNA is removed ... to be sure entire DNA is coppied to the NW neighbor. This slight clock logic changes depend on the efficiency of the construction ... the main question rather is ... what would be the final exponent in the DNA loop length ... allowing to store the entire construction ... so the clock logic could change slightly so it would be better to have estimates for the length of the remaining construction to iterate to its final shape.

So the construction starts by very long speboe -> block push (let me check the HD distance ... 697584 HD) ... (Followed by ~ 2100 ticks MOVE 44HD doing the cell entrance filtering). ... doing that long move by 44HD steps would require about 33 293 000 ticks (... much longer then DNA ... and prolonging DNA would not help much as it would prolong the distance as well).

The long move was planned to be done by crab single stretching.
The 0degree sigle lane recipe to start the crab (on clean speboe neigborhood with a prepared taret block) required 649 000 ticks, then we have to wait esentially T ticks to decrease the distance by T FD (2T HD). ... so we are close to 1 150 000 ticks to do the move (measuring the time at "DNA loop exit point").

Cordership alone would travel the distance about 8 400 000 ticks.

I bet it would be faster to create (simkin) EECCA to lounch it (in envelope crabstretcher construction could be another option).

... actually having a working solution could be fine, we know exactly how this stage would end up, so we could plan allocation and return to this phase optimization "independently". ... Let me add final move44 to the example (just to see the shell filtering).

You can see it at right corner along the path from parent to child cells (parent being the centrall cell) (NW would not have the shell block+eater ready, but we want to watch following stages (with built cell)). At the end of simulation you can see the escaping gliders pattern ... Alive (7) state sent from the neighbor cells to grandneighbors ... the signal in central cell was received and started its clock.
... then "DNA transfer" to NW 6x, NE 5x, SW 4x, SE 3x ... actually it is salvo to build the oriented cell portion and then something "unimportant" as all the tree entry DNA paths are absorbing gliders after the end of the construction directed.
... then 3 gliders sent to present the central cell state to ints neighbors.

There are just eaters remaining from the neighbor cells (to prevent escape of shell construction gliders in demo ... there will be NW 7x, NE, 6x, SW 5x, SE 4x)

...

I have fould problem of the preseted cell ... the state computing path collides with the NW DNA transfer path ... but the solution is trivial ... shortening the state computing path.

OK 3 DNA loops added to correct the timing issue, state computing path shortened.
In the example Move44 was added to the DNA, centrall cell is started without DNA ... to show DNA transfer from SW neighbor.
There are "open kernell" ott paths added to centrall and SW cells, the start of construction blocks are removed from all 20 corners.
The construction block was moved to centrall cell SE corner (mimicking the 697584 HD move) to show the cell build prevention.

The Cells are constructed to reflect 2 generation builds ... the pattern is started at the arival of signals (from not seen previous middle generation of states 610/234/351 ... randomly (chosen does not reflect the state computation rules)) ... the state computation is mimicked to 4 alive cells ... and then centrall cell in middle 3 state.

Now entire building salvas of shells and directed cells ... and state transfers ... are the traveling signals at the end of simulation ... (they would be constructing neighboring cels and interpreted there).
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

Seems I have almost finished the simkin ecca compiler (works for one direction so far).
Here is first use case:
Defragmented crabsinglestretcher:

Code: Select all

x = 2925, y = 3105, rule = B3/S23
63b2o$63b2o3$69b2o$69b2o6$71b2o$71bo$69bobo$69b2o75$2o$2o$6b3o$6bo$7bo
8$18b3o$18bo$19bo6$21b3o$21bo$22bo4$29b3o$29bo$30bo12$57b3o$57bo$58bo
9$61bo$60b2o$60bobo9$59b3o$59bo$60bo19$86bo$85b2o$85bobo25$101b3o$101b
o$102bo8$115b3o$115bo$116bo10$125b3o$125bo$126bo12$136b3o$136bo$137bo
30$142b3o$142bo$143bo10$152b3o$152bo$153bo7b3o$161bo$162bo10$172b3o$
172bo$173bo20$197b3o$197bo$198bo45$264b3o$253b3o8bo$253bo11bo$254bo3$
280b3o$280bo$281bo17$296b3o$296bo$297bo10$307b3o$307bo$308bo15$338bo$
337b2o$326bo10bobo$325b2o$325bobo8$346bo$345b2o$345bobo9$341b3o$341bo$
342bo15$357bo$356b2o$356bobo3$359b3o$359bo$360bo13b3o$374bo$375bo$363b
o$362b2o$362bobo12$368b3o$368bo$369bo8$369b3o$369bo$370bo4$386b3o$386b
o$387bo16$402b3o$402bo$403bo2$406b3o$406bo$407bo10$417b3o$417bo$418bo
16$450b3o$450bo$440b3o8bo$440bo$441bo5$450bo$449b2o$449bobo13$463b3o$
463bo$464bo5$461b3o$461bo$462bo20$473b3o$473bo$474bo$481bo$480b2o6b3o$
480bobo5bo$489bo$495bo$494b2o$494bobo10$510bo$509b2o$509bobo15$530b3o$
530bo$522b3o6bo$522bo$523bo13$542bo$541b2o$541bobo2$554bo$553b2o$553bo
bo15$561b3o$561bo$562bo11$588bo$587b2o$587bobo2$576bo$575b2o$575bobo
12$593bo$592b2o$592bobo8bo$602b2o$602bobo11$606b3o$606bo$607bo6$614b3o
$603bo10bo$602b2o11bo$602bobo18$605b3o$605bo$606bo3$610b3o$610bo$611bo
2$624b3o$624bo$625bo6$625b3o$625bo$626bo2$637b3o$637bo$638bo5$624bo$
623b2o$623bobo14bo$639b2o$639bobo34$667bo$666b2o$666bobo9$682b3o$682bo
$683bo14$689b3o6b3o4b3o$689bo8bo6bo$690bo8bo6bo10$721b3o$721bo$722bo3$
709bo$708b2o$708bobo5$728bo$727b2o$727bobo12$739bo$738b2o$738bobo14$
746bo$745b2o$745bobo3$771b3o$749bo21bo$748b2o22bo$748bobo13$777bo$776b
2o$776bobo16$790bo$789b2o$789bobo5bo$796b2o$796bobo2$811bo$810b2o$810b
obo2$798bo$797b2o$797bobo13bo$812b2o$812bobo5$814b3o$814bo$815bo6$829b
3o$829bo$830bo2$836b3o$836bo$837bo4$836b3o$836bo$837bo12$850b3o$850bo$
851bo14$876b3o$876bo$877bo12$897bo$896b2o$889bo6bobo$888b2o$888bobo25$
917b3o$917bo$918bo2$927b3o$927bo$928bo10$922bo$921b2o$921bobo10$933bo$
932b2o$932bobo8$931b3o$931bo$932bo6$947b3o$947bo$948bo5b3o$954bo6bo$
955bo4b2o$960bobo4$996b3o$963b3o30bo$963bo33bo$964bo14b3o$979bo$980bo
3$1012b3o$982b3o27bo$982bo30bo$983bo7$1010b3o$1010bo$1011bo2$1021b3o$
1021bo$1022bo6b3o$1029bo$1030bo4$1031b3o$1031bo$1032bo4$1035b3o$1035bo
$1036bo5$1044bo$1043b2o$1043bobo12$1072b3o$1072bo$1073bo3$1056b3o$
1056bo$1057bo6$1091bo$1090b2o$1090bobo8$1090bo$1089b2o$1089bobo6$1091b
o$1090b2o$1090bobo12$1100bo5bo$1099b2o4b2o$1099bobo3bobo2$1114bo$1113b
2o$1113bobo5$1125b3o$1125bo$1126bo10$1138b3o$1138bo$1139bo25$1155bo$
1154b2o$1154bobo6$1155bo$1154b2o$1154bobo10$1167bo$1166b2o$1166bobo16$
1193bo$1192b2o$1192bobo3$1203b3o$1203bo$1204bo4$1206b3o$1206bo$1207bo
12$1217b3o$1217bo$1218bo2$1226b3o$1226bo$1227bo5$1230bo$1229b2o$1229bo
bo3$1233b3o$1233bo$1234bo11$1257bo$1256b2o$1256bobo$1246b3o$1246bo$
1247bo13$1260bo$1259b2o$1259bobo50$1279b3o$1279bo$1280bo8$1293b3o$
1293bo$1294bo11$1306bo$1305b2o$1297bo7bobo$1296b2o$1296bobo34$1354bo$
1353b2o$1353bobo3$1358b3o$1358bo$1359bo41$1390bo$1389b2o$1389bobo5$
1391b3o$1391bo$1392bo8$1397b3o$1397bo$1398bo27$1417b3o$1417bo$1418bo
48$1443b3o$1443bo$1444bo2$1449b3o$1449bo$1450bo4$1459b3o$1459bo$1460bo
2$1465b3o$1465bo$1466bo4$1463bo$1462b2o$1462bobo17$1475b3o$1475bo$
1476bo2$1479b3o$1479bo$1480bo15$1515bo$1514b2o$1514bobo50$1572b3o$
1572bo$1573bo12$1583b3o$1583bo$1584bo6$1591b3o$1591bo$1592bo4$1599b3o$
1599bo$1600bo20$1626b3o$1626bo7bo$1627bo5b2o$1633bobo4$1644bo$1643b2o$
1643bobo7$1641b3o$1641bo$1642bo5$1674b3o$1674bo$1675bo3$1679bo$1661b3o
14b2o$1661bo16bobo$1662bo7$1691bo$1690b2o$1690bobo6$1694bo$1693b2o$
1693bobo3$1711b3o$1711bo$1712bo2$1698b3o$1698bo$1699bo3$1725bo$1708b3o
13b2o$1708bo15bobo$1709bo3$1729b3o$1729bo$1730bo12$1740b3o$1740bo$
1741bo6$1748b3o$1748bo10bo$1749bo8b2o$1758bobo4$1764bo$1763b2o$1763bob
o7$1764b3o$1764bo$1765bo4$1770b3o4b3o$1770bo6bo$1771bo6bo6$1811b3o$
1811bo$1791b3o18bo$1791bo$1792bo5b3o$1798bo$1799bo6$1824b3o$1824bo$
1825bo25$1841bo$1840b2o$1840bobo3$1855b3o$1855bo$1856bo4$1857b3o$1857b
o12b3o$1858bo11bo$1871bo3$1859b3o$1859bo$1860bo3$1884b3o$1884bo$1885bo
7$1897bo$1896b2o$1896bobo6$1898bo$1897b2o$1897bobo19$1905b3o13b3o$
1905bo15bo$1906bo15bo4$1907b3o$1907bo$1908bo15$1936bo$1935b2o$1935bobo
9$1948b3o$1948bo$1949bo4$1954b3o$1954bo$1955bo8$1967b3o$1967bo$1968bo
6$1975b3o$1975bo$1976bo8$1993b3o$1993bo$1974b3o17bo$1974bo$1975bo3$
1996bo$1974b3o18b2o$1974bo20bobo$1975bo18$2008b3o$2008bo$2000b3o6bo$
2000bo$2001bo9$2027bo$2026b2o$2026bobo10$2023bo$2022b2o$2022bobo9$
2026b3o$2026bo$2027bo4$2045b3o$2045bo$2046bo$2033bo$2032b2o$2032bobo9$
2050b3o$2050bo$2051bo2$2070b3o$2062bo7bo$2061b2o8bo$2061bobo$2074b3o$
2074bo$2075bo6$2089b3o$2089bo$2090bo8$2087b3o$2087bo$2088bo3$2099bo5bo
$2098b2o4b2o$2098bobo3bobo2$2112bo$2111b2o$2111bobo35$2083b3o$2083bo$
2084bo32$2107b3o$2107bo$2108bo16$2128b3o$2128bo$2129bo4$2140b3o$2140bo
$2141bo8$2141b3o$2141bo$2142bo8$2155b3o$2155bo$2156bo10$2167b3o$2167bo
$2168bo$2173bo$2172b2o$2172bobo12$2177bo13b3o$2176b2o13bo$2176bobo13bo
12$2201b3o$2201bo$2202bo11$2212bo$2211b2o$2211bobo21$2234b3o$2234bo$
2235bo7$2233bo$2232b2o$2232bobo2$2241bo$2240b2o$2240bobo5$2242b3o$
2242bo$2243bo11$2253b3o$2253bo$2254bo12$2288b3o$2272bo15bo$2271b2o7b3o
6bo$2271bobo6bo$2281bo30$2312b3o$2312bo$2313bo9$2337bo$2336b2o$2336bob
o5$2337b3o$2337bo$2338bo8$2335b3o$2335bo8bo$2336bo6b2o$2343bobo22$
2372bo$2365b3o3b2o$2365bo5bobo$2366bo9$2370bo$2369b2o$2369bobo15$2396b
3o$2396bo$2397bo4$2396b3o$2396bo$2397bo10$2417b3o$2417bo$2418bo$2422bo
$2404b3o14b2o$2404bo16bobo$2405bo10$2419b3o$2419bo12bo$2420bo10b2o$
2431bobo3$2435b3o$2435bo$2436bo21$2423b3o$2423bo$2424bo8$2423b3o$2423b
o$2424bo16$2428b3o$2428bo$2429bo5$2435b3o$2435bo$2436bo12$2446b3o$
2446bo$2447bo$2467bo$2466b2o$2466bobo8$2466bo$2465b2o$2465bobo4$2466bo
$2465b2o$2465bobo6bo$2473b2o$2473bobo13$2473b3o$2473bo$2474bo39$2500bo
$2499b2o$2499bobo10$2523b3o$2523bo$2524bo14$2531b3o$2531bo$2532bo4$
2537b3o7b3o$2537bo9bo$2538bo9bo12$2562b3o$2562bo$2563bo10$2557b3o$
2557bo$2558bo4$2560b3o$2560bo$2561bo10$2570b3o$2570bo$2571bo2$2579b3o$
2579bo$2580bo53b3o4b3o$2634bo6bo$2635bo6bo3$2583bo$2582b2o$2582bobo3$
2654b3o$2586bo67bo$2585b2o68bo$2585bobo3bo$2590b2o$2590bobo$2609b3o$
2609bo$2610bo59b3o$2670bo$2671bo3$2675bo$2674b2o$2674bobo6$2674bo$
2673b2o$2673bobo7$2676b3o$2676bo$2677bo4$2691b3o$2691bo$2692bo5$2705bo
$2704b2o5b3o$2704bobo4bo$2712bo10$2723b3o$2723bo$2724bo20$2744b3o3b3o$
2744bo5bo$2745bo5bo7$2759bo$2758b2o$2758bobo17$2772b3o$2772bo$2773bo
15$2791b3o$2791bo$2792bo8$2803b3o$2803bo$2804bo5$2820bo$2819b2o9bo$
2819bobo7b2o$2829bobo4$2829b3o$2829bo$2830bo5$2831bo$2830b2o$2830bobo
8$2844bo$2843b2o$2843bobo2$2848bo$2847b2o$2847bobo78$2923bo$2922b2o$
2922bobo9$2918b3o$2918bo$2919bo12$2916bo$2915b2o$2915bobo$2922bo$2921b
2o$2921bobo!
giving

Code: Select all

b86 b84|b89 o89 o87 o73 e82 o93 e89 b99 o95 o97 o100 b126 b123|b128 b121 b122 b119
b106|b107|b108|b109|b110|b111 b99 b89 b92 o93 e95 e81 e85 o99 e102 o103
e104|e105|e106|o101|o102|o103 o90 b113 b122 b111 b113 b113 o114 e107|e108|o111|o112 o99 e110
b110 o119 o129 e126 o118 e116 e113 o118 o108 e115 b107 o115 e119 e103 e116 e108
e120|e121|o116|o117 e130 o116 b146 b146 b136|b137|b140 o143 e157 b135 e143 b152 b146
b151|b154|b155 b146 o139 b154 o135 b142 e145 e154 e157 b132|b135|b136 e144 e149 e144 b151 e134
b138 b142 b135 b132 b138 o138 o128 b133 e123 o130 o124 b143 b144 b154 b146 o141 b137|b138 o140
b126 o129 b106 b98 o110 o103 b93|b94|b97 o101 o103 e103 b108 o87 e83 e94 e101 e106 e100
e96 b90 o89 e101 b109 e109 e101|e102 b94 b97 b95|b100 o95 e100 o100 b103 e91 e106 b137
o133 b142|b143|b144|b145|b146 e135 e125 o124 e137 b141 o145 o154 o178 o176 b172 b170 e180 o185
o185 e168 b161 b159|b164 o164 o162 o157 e152 e148 o158 b151 b130|b131|b132 b134 b132|b137 e137
o140 o123 o136 b120 b120 b118|b123 o123 e115 e116 b123 b122|b123 o116 b112|b116 b107 b90 o89
e101 o90 o94 o98 b82 o78 e75|e76|o71|o72 e83 o95 o99 o79 e89 b86 b86 b83|b88
o83 o96 o102 b75 e81 o98 o88 e84 e100 o106 e110 o93 o102 e97 b86 b86 b79 o91 e86
e80 b77 o141 o151 o147|o148 b142 b151 o147 o147 e146 e156|e157|o155|o158 b140 o144 e148 b147
e159 e155|e156|e157|o152|o153|o154 b159 o161 e159 b150 o140 o150 e138 o143 o155 e149 o151 e145
e159 o148 b154 b162 o145 b145 o159 e149 o149 b184 o194 b207 b207 o210 b194 e205 e211 e205 o219
b235 b222 b230 b230 b220 b212|b219 b233|b234|b235|b236 b239 b236|b241 o236 e241 e244 e241 b224
o183 b176 o173 o165 b167 e176 o181 o172 b167 b160 o160 o161 b155 e157 o161 b159 o157 e149 e140
o145 e152 e149 e149 e154|o144|o146 b168 b179|b182|b183|b186 e183
compiled to

Code: Select all

HA*36HA*24NA*11MA*7XA*40YA*70NA*11IA*43NA*3MA*71NA*59HA*142RA*125XA*8YA*14NAABA*17PA*5XA*16YA*30XA*16ZA*3BA*15IA*3JA*79XA*16YA*30XA*8YA*10HA*96XA*40YABA*11NA*15XA*8ZA*68HA*4MA*15XA*48YA*66HA*40NA*47NA*13GA*66HA*14GA*30JA*59OA*110JA*3MA*95XA*24ZA*3BA*7IA*73GA*44GA*94XA*56YA*10HA*164HA*20OA*126XA*64ZA*5CA*81XA*40ZA*76QA*134WA*20XA*64YA*3CA*97XA*32YA*22JA*77GA*54JA*4CA*81XA*40YA*30JA*37SA*14FA*88HA*54PA*73HA*68HA*20OA*118NAABA*15IA*47QA*174XA*8YA*106HA*12HA*3BA*11NA*29RA*137HA*28MA*11HA*12HA*92HA*3BA*3NA*5SA*56XA*8ZA*84HA*5CA*65NA*11IA*65GA*70JA*61GA*52GA*60GA*74HXA*56ZA*56XA*8ZA*12IA*15HA*16XZA*24XA*24YA*66HA*16NAABA*7IA*81GA*182NA*3MA*133PA*25IA*39HA*40JA*39NA*23NA*83HA*140HA*36HA*28HA*36HA*62GA*78NA*7NAABAFA*4XZA*84HA*36HA*3BA*11NA*5GA*60GA*138HA*3BA*3NA*4CA*73XA*16YA*38XA*8ZA*76HA*5CA*81NA*99HA*3BA*7HA*44HA*36HA*24NAABA*23IA*41SA*60QA*122HA*3BA*11NAABA*7HXA*56ZA*20HA*60HA*60HA*3BA*7HA*28HA*3BA*3XA*56ZA*72NA*23NA*4CA*73XA*48ZA*52HA*38RA*133NA*99HA*68HA*5CA*41XA*32ZA*108OA*100GA*140GA*122HA*38GAAMA*139HA*4IAADA*27HA*38PA*93NA*5GA*52GA*46NA*263NA*47NA*11QA*134NA*3MA*63XYA*84GA*34HA*60HA*38GA*54XA*56ZXA*32ZA*32XZA*4OA*178HA*14EAABA*11NA*55NA*3IA*11NA*3IA*43JA*19HA*68HA*76HA*5CA*81XA*8ZA*80NAABA*15IA*3XA*144YA*106HA*56XA*8ZA*76HA*3BA*7HA*32JA*31JA*19IA*59XA*72ZA*12HA*76HA*20OA*94XA*64ZA*48XA*16ZA*44HA*8JA*53GA*30JAABA*23HA*3BCA*17NA*19HA*4MA*31NA*15XA*40YA*46WA*28NA*19HA*44HA*8NAABA*11XA*16ZA*40XZA*16NAABA*23IAFA*52XA*32YA*34IA*23IA*23HA*140HA*48XA*24Z
(A..D are moves A is waiting 1 tick, BD are 1 simkin glider destroyals, C destroys 2 simkin gliders)
(E..N are single glider emissions, O..W double glider emissions, XY,XZ variable distance double glider emission)
Translated to

Code: Select all

[1] 92 134 126 92 134 114 138 125 101 92 163 157 138 161 221 160 138 125 101 100 137 115 148 138 125 93 92 163 221 138 125 149 92 134 232 196 147 147 296 138 129 221 104 138 125 92 107 196 136 211 195 138 137 221 120 138 137 219 93 105 100 137 115 108 144 132 107 169 138 137 221 120 138 129 221 100 92 134 186 138 161 221 91 101 138 125 105 138 129 219 158 92 134 94 92 163 165 138 169 221 156 92 134 130 138 125 137 138 125 103 185 129 156 92 134 104 185 129 120 144 132 107 149 96 224 96 260 144 132 107 93 92 163 245 138 145 219 93 97 100 137 115 178 185 129 134 185 129 184 138 177 221 100 92 134 254 92 134 110 96 224 96 276 138 185 219 95 171 138 161 219 166 96 240 96 284 138 119 163 356 138 185 221 93 187 138 153 221 112 144 132 107 167 185 129 144 144 132 107 94 171 138 161 221 120 144 132 107 127 196 152 108 104 196 128 178 92 134 144 196 136 211 263 92 134 158 92 134 110 96 224 96 268 138 125 92 105 100 137 115 152 96 240 96 324 138 129 221 196 92 134 102 92 134 93 101 138 125 119 196 147 147 308 92 134 118 92 163 161 92 134 102 92 134 182 92 134 93 93 138 125 95 196 152 108 146 138 129 219 174 92 134 95 155 138 125 101 100 137 115 170 185 129 160 144 132 107 151 185 129 142 185 129 150 185 129 164 92 134 90 138 177 219 146 138 129 219 102 100 137 115 120 92 134 106 138 121 219 114 138 145 221 156 92 134 106 138 125 92 97 100 137 115 186 185 129 272 138 125 93 92 163 283 196 136 211 215 100 137 115 144 92 134 130 144 132 107 129 138 125 113 138 125 173 92 134 230 92 134 126 92 134 118 92 134 126 92 134 152 185 129 168 138 125 97 138 125 92 91 196 128 94 138 121 219 174 92 134 126 92 134 93 101 138 125 95 185 129 150 185 129 228 92 134 93 93 138 125 94 163 138 137 221 128 138 129 219 166 92 134 95 171 138 125 189 92 134 93 97 92 134 134 92 134 126 92 134 114 138 125 92 113 100 137 115 146 196 152 108 150 96 240 96 272 92 134 93 101 138 125 92 97 92 134 90 138 177 219 110 92 134 150 92 134 150 92 134 93 97 92 134 118 92 134 93 93 138 177 219 162 138 125 113 138 125 94 163 138 169 219 142 92 134 128 196 147 147 304 138 125 189 92 134 158 92 134 95 131 138 153 219 198 96 224 96 250 185 129 230 185 129 212 92 134 128 185 129 92 92 163 289 92 134 94 100 137 115 107 117 92 134 128 196 136 211 283 138 125 95 185 129 142 185 129 136 138 125 353 138 125 137 138 125 101 96 240 96 284 138 125 93 92 163 213 138 121 221 174 185 129 124 92 134 150 92 134 128 185 129 144 138 177 219 90 138 153 219 122 138 121 219 94 96 224 96 328 92 134 104 96 143 130 92 101 138 125 145 138 125 93 100 137 115 116 138 125 93 100 137 115 148 144 132 107 109 92 134 158 92 134 166 92 134 95 171 138 129 219 170 138 125 92 105 100 137 115 108 138 265 221 196 92 134 146 138 129 219 166 92 134 93 97 92 134 122 144 132 107 121 144 132 107 109 100 137 115 164 138 193 219 102 92 134 166 92 134 110 96 224 96 244 138 185 219 138 138 137 219 134 92 134 98 144 132 107 143 185 129 120 144 132 107 92 113 92 134 93 90 107 138 125 109 92 134 94 92 163 181 138 125 105 138 161 221 136 138 119 163 364 138 125 109 92 134 134 92 134 98 138 125 92 101 138 137 219 130 138 121 219 106 138 125 92 113 100 137 115 106 196 128 142 138 153 221 124 100 137 115 128 100 137 115 128 92 134 230 92 134 138 138 145 219 (90)
Inserted to ecca:

Code: Select all

x = 29659, y = 29668, rule = B3/S23
13b3o17$2o$obo$bo64b3o2$17bo6b2o38bo5bo$16bobo5b2o38bo5bo$16bobo45bo5b
o$17bo$34bo31b3o$9b2o23b3o$8bobo26bo$9bo26b2o4$42bobo$25b2o5b2o8bobo3b
o$25b2o5b2o7b2o37b2o$42bo36bo2bo$29b2o13bobobo31b2o$24bo4b2o10bo2bob3o
$5b2o16bobo17bo3bo$5b2o16bobo$24bo$52b2o$52b2o2$49b2o5b2o$49b2o5b2o$
12bo$6b2o3bobo$5bo2bo2b2o$6b2o5$51bo$52bo$50b3o151$198b2o$197b2o$199bo
21$221b2o$20b2o198b2o$20b2o200bo31$255bo$254b2o$254bobo30$286b2o$285b
2o$287bo21$309b2o$308b2o$310bo31$343bo$342b2o$342bobo27$371b2o$370b2o$
372bo32$406bo$405b2o$405bobo30$436b3o$436bo$437bo23$462b2o$461b2o$463b
o21$485b2o$484b2o$486bo39$525b3o$525bo$526bo37$565b2o$564b2o$566bo32$
600bo$599b2o$599bobo39$639b3o$639bo$640bo53$695b2o$694b2o$696bo38$735b
2o$734b2o$736bo32$770bo$769b2o$769bobo30$800b3o$800bo$801bo23$826b2o$
825b2o$827bo23$851b2o$850b2o$852bo32$885b2o$885bobo$885bo27$914b2o$
913b2o$915bo35$951b2o$950b2o$952bo32$986bo$985b2o$985bobo30$1016b3o$
1016bo$1017bo21$1040b2o$1039b2o$1041bo21$1063b2o$1062b2o$1064bo39$
1103b3o$1103bo$1104bo53$1159b2o$1158b2o$1160bo32$1194bo$1193b2o$1193bo
bo30$1224b3o$1224bo$1225bo35$1262b2o$1261b2o$1263bo21$1285b2o$1284b2o$
1286bo31$1319bo$1318b2o$1318bobo56$1377bo$1376b2o$1376bobo47$1426bo$
1425b2o$1425bobo35$1462b2o$1462bobo$1462bo35$1499b2o$1498b2o$1500bo72$
1573b2o$1572b2o$1574bo32$1608bo$1607b2o$1607bobo31$1639b3o$1639bo$
1640bo53$1695b2o$1694b2o$1696bo24$1721b2o$1720b2o$1722bo32$1756bo$
1755b2o$1755bobo30$1786b3o$1786bo$1787bo21$1809b3o$1809bo$1810bo24$
1837bo$1836b2o$1836bobo47$1886bo$1885b2o$1885bobo32$1920bo$1919b2o$
1919bobo51$1972b2o$1972bobo$1972bo47$2021b2o$2020b2o$2022bo32$2056bo$
2055b2o$2055bobo33$2089b3o$2089bo$2090bo53$2145b2o$2144b2o$2146bo28$
2175b2o$2174b2o$2176bo32$2210bo$2209b2o$2209bobo33$2243b3o$2243bo$
2244bo52$2299bo$2298b2o$2298bobo22$2321b3o$2321bo$2322bo24$2348b2o$
2347b2o$2349bo23$2373b2o$2372b2o$2374bo32$2407b2o$2407bobo$2407bo27$
2436b2o$2435b2o$2437bo25$2463b2o$2462b2o$2464bo34$2499b2o$2498b2o$
2500bo31$2532b2o$2531b2o$2533bo25$2558b3o$2558bo$2559bo40$2601b2o$
2600b2o$2602bo32$2636bo$2635b2o$2635bobo33$2669b3o$2669bo$2670bo53$
2725b2o$2724b2o$2726bo28$2755b2o$2754b2o$2756bo32$2790bo$2789b2o$2789b
obo31$2821b3o$2821bo$2822bo53$2877b2o$2876b2o$2878bo23$2902b2o$2901b2o
$2903bo21$2925b2o$2924b2o$2926bo31$2959bo$2958b2o$2958bobo45$3005b2o$
3004b2o$3006bo32$3040bo$3039b2o$3039bobo39$3079b3o$3079bo$3080bo53$
3135b2o$3134b2o$3136bo21$3157b3o$3157bo$3158bo23$3183b2o$3182b2o$3184b
o32$3218bo$3217b2o$3217bobo30$3248b3o$3248bo$3249bo24$3275b2o$3274b2o$
3276bo32$3310bo$3309b2o$3309bobo31$3341b3o$3341bo$3342bo52$3397bo$
3396b2o$3396bobo38$3436b2o$3435b2o$3437bo21$3459b2o$3458b2o$3460bo31$
3493bo$3492b2o$3492bobo22$3516b2o$3515b2o$3517bo21$3539b2o$3538b2o$
3540bo39$3579b3o$3579bo$3580bo39$3621b2o$3620b2o$3622bo32$3656bo$3655b
2o$3655bobo41$3697b3o$3697bo$3698bo53$3753b2o$3752b2o$3754bo37$3792b2o
$3791b2o$3793bo21$3815b2o$3814b2o$3816bo31$3849bo$3848b2o$3848bobo31$
3881b2o$3880b2o$3882bo32$3916bo$3915b2o$3915bobo30$3946b3o$3946bo$
3947bo32$3981b2o$3980b2o$3982bo32$4016bo$4015b2o$4015bobo30$4046b3o$
4046bo$4047bo23$4073bo$4072b2o$4072bobo45$4118b3o$4118bo$4119bo30$
4151b2o$4150b2o$4152bo37$4190b2o$4189b2o$4191bo21$4213b2o$4212b2o$
4214bo31$4247bo$4246b2o$4246bobo24$4273bo$4272b2o$4272bobo45$4318b3o$
4318bo$4319bo30$4351b2o$4350b2o$4352bo28$4381b2o$4380b2o$4382bo34$
4417b2o$4416b2o$4418bo31$4450b2o$4449b2o$4451bo25$4476b3o$4476bo$4477b
o35$4514b2o$4513b2o$4515bo22$4538b2o$4537b2o$4539bo54$4594b2o$4593b2o$
4595bo22$4618b2o$4617b2o$4619bo63$4683b2o$4682b2o$4684bo34$4719b2o$
4718b2o$4720bo31$4752b2o$4751b2o$4753bo25$4778b3o$4778bo$4779bo21$
4802b2o$4801b2o$4803bo21$4825b2o$4824b2o$4826bo39$4865b3o$4865bo$4866b
o59$4927b2o$4926b2o$4928bo32$4962bo$4961b2o$4961bobo35$4997b3o$4997bo$
4998bo52$5053bo$5052b2o$5052bobo22$5075b3o$5075bo$5076bo22$5100b2o$
5099b2o$5101bo23$5125b2o$5124b2o$5126bo32$5159b2o$5159bobo$5159bo27$
5188b2o$5187b2o$5189bo42$5233bo$5232b2o$5232bobo45$5278b3o$5278bo$
5279bo30$5311b2o$5310b2o$5312bo31$5345bo$5344b2o$5344bobo45$5390b3o$
5390bo$5391bo30$5423b2o$5422b2o$5424bo44$5469b2o$5468b2o$5470bo32$
5504bo$5503b2o$5503bobo43$5547b3o$5547bo$5548bo53$5603b2o$5602b2o$
5604bo23$5628b2o$5627b2o$5629bo21$5651b2o$5650b2o$5652bo31$5685bo$
5684b2o$5684bobo62$5748b2o$5747b2o$5749bo21$5771b2o$5770b2o$5772bo31$
5805bo$5804b2o$5804bobo26$5832b2o$5831b2o$5833bo22$5856b2o$5855b2o$
5857bo54$5912b2o$5911b2o$5913bo22$5936b2o$5935b2o$5937bo67$6005b2o$
6004b2o$6006bo32$6040bo$6039b2o$6039bobo45$6085b3o$6085bo$6086bo52$
6141bo$6140b2o$6140bobo22$6164b2o$6164bobo$6164bo41$6207b2o$6206b2o$
6208bo32$6242bo$6241b2o$6241bobo39$6281b3o$6281bo$6282bo52$6337bo$
6336b2o$6336bobo40$6378b2o$6377b2o$6379bo22$6402b2o$6401b2o$6403bo58$
6462b2o$6461b2o$6463bo22$6486b2o$6485b2o$6487bo69$6557b2o$6556b2o$
6558bo32$6592bo$6591b2o$6591bobo28$6621b2o$6621bobo$6621bo39$6662b2o$
6661b2o$6663bo87$6751b2o$6750b2o$6752bo32$6786bo$6785b2o$6785bobo45$
6831b3o$6831bo$6832bo53$6887b2o$6886b2o$6888bo21$6910b2o$6910bobo$
6910bo45$6957b2o$6956b2o$6958bo32$6992bo$6991b2o$6991bobo37$7029b3o$
7029bo$7030bo53$7085b2o$7084b2o$7086bo26$7113b2o$7112b2o$7114bo34$
7149b2o$7148b2o$7150bo31$7182b2o$7181b2o$7183bo25$7208b3o$7208bo$7209b
o39$7251bo$7250b2o$7250bobo45$7296b3o$7296bo$7297bo30$7329b2o$7328b2o$
7330bo34$7365b2o$7364b2o$7366bo34$7401b2o$7400b2o$7402bo31$7434b2o$
7433b2o$7435bo25$7460b3o$7460bo$7461bo21$7484b2o$7484bobo$7484bo41$
7527b2o$7526b2o$7528bo32$7562bo$7561b2o$7561bobo39$7601b3o$7601bo$
7602bo53$7657b2o$7656b2o$7658bo28$7687b2o$7686b2o$7688bo34$7723b2o$
7722b2o$7724bo31$7756b2o$7755b2o$7757bo25$7782b3o$7782bo$7783bo29$
7815bo$7814b2o$7814bobo47$7864bo$7863b2o$7863bobo36$7902bo$7901b2o$
7901bobo25$7929bo$7928b2o$7928bobo24$7955bo$7954b2o$7954bobo47$8004bo$
8003b2o$8003bobo30$8036bo$8035b2o$8035bobo43$8080b2o$8079b2o$8081bo21$
8103b2o$8102b2o$8104bo31$8137bo$8136b2o$8136bobo34$8173bo$8172b2o$
8172bobo47$8222bo$8221b2o$8221bobo32$8256bo$8255b2o$8255bobo51$8308b2o
$8308bobo$8308bo64$8374b2o$8373b2o$8375bo21$8397b2o$8396b2o$8398bo31$
8431bo$8430b2o$8430bobo38$8470b2o$8469b2o$8471bo21$8493b2o$8492b2o$
8494bo31$8527bo$8526b2o$8526bobo26$8554b2o$8553b2o$8555bo22$8578b2o$
8577b2o$8579bo54$8634b2o$8633b2o$8635bo22$8658b2o$8657b2o$8659bo65$
8725b2o$8724b2o$8726bo32$8760bo$8759b2o$8759bobo30$8790b3o$8790bo$
8791bo21$8813b3o$8813bo$8814bo24$8840b2o$8839b2o$8841bo23$8865b2o$
8864b2o$8866bo32$8899b2o$8899bobo$8899bo27$8928b2o$8927b2o$8929bo36$
8966b2o$8965b2o$8967bo22$8990b2o$8989b2o$8991bo58$9050b2o$9049b2o$
9051bo22$9074b2o$9073b2o$9075bo79$9155b2o$9154b2o$9156bo32$9190bo$
9189b2o$9189bobo31$9221b3o$9221bo$9222bo53$9277b2o$9276b2o$9278bo47$
9326b2o$9325b2o$9327bo21$9349b2o$9348b2o$9350bo31$9383bo$9382b2o$9382b
obo24$9408b2o$9407b2o$9409bo21$9431b2o$9430b2o$9432bo31$9465bo$9464b2o
$9464bobo22$9487b3o$9487bo$9488bo23$9513b2o$9512b2o$9514bo32$9548bo$
9547b2o$9547bobo30$9578b3o$9578bo$9579bo27$9609bo$9608b2o$9608bobo47$
9658bo$9657b2o$9657bobo35$9694b2o$9694bobo$9694bo35$9731b2o$9730b2o$
9732bo75$9808b2o$9807b2o$9809bo21$9831b2o$9830b2o$9832bo31$9865bo$
9864b2o$9864bobo28$9894b2o$9893b2o$9895bo21$9917b2o$9916b2o$9918bo39$
9957b3o$9957bo$9958bo38$9998b2o$9997b2o$9999bo21$10021b2o$10020b2o$
10022bo31$10055bo$10054b2o$10054bobo24$10080b2o$10079b2o$10081bo21$
10103b2o$10102b2o$10104bo31$10137bo$10136b2o$10136bobo44$10182b2o$
10181b2o$10183bo21$10205b2o$10204b2o$10206bo31$10239bo$10238b2o$10238b
obo22$10261b3o$10261bo$10262bo21$10285b2o$10284b2o$10286bo32$10320bo$
10319b2o$10319bobo30$10350b3o$10350bo$10351bo21$10375bo$10374b2o$
10374bobo47$10424bo$10423b2o$10423bobo36$10462bo$10461b2o$10461bobo25$
10489bo$10488b2o$10488bobo35$10525b2o$10524b2o$10526bo32$10560bo$
10559b2o$10559bobo31$10591b3o$10591bo$10592bo52$10647bo$10646b2o$
10646bobo42$10690b2o$10689b2o$10691bo21$10713b2o$10712b2o$10714bo31$
10747bo$10746b2o$10746bobo22$10770b2o$10770bobo$10770bo37$10809b2o$
10808b2o$10810bo32$10844bo$10843b2o$10843bobo30$10874b3o$10874bo$
10875bo23$10900b2o$10899b2o$10901bo23$10925b2o$10924b2o$10926bo32$
10959b2o$10959bobo$10959bo27$10988b2o$10987b2o$10989bo40$11031bo$
11030b2o$11030bobo45$11076b3o$11076bo$11077bo30$11109b2o$11108b2o$
11110bo38$11149b2o$11148b2o$11150bo34$11185b2o$11184b2o$11186bo31$
11218b2o$11217b2o$11219bo25$11244b3o$11244bo$11245bo35$11283bo$11282b
2o$11282bobo45$11328b3o$11328bo$11329bo30$11361b2o$11360b2o$11362bo33$
11397bo$11396b2o$11396bobo45$11442b3o$11442bo$11443bo30$11475b2o$
11474b2o$11476bo35$11513bo$11512b2o$11512bobo45$11558b3o$11558bo$
11559bo30$11591b2o$11590b2o$11592bo39$11632b2o$11631b2o$11633bo21$
11655b2o$11654b2o$11656bo31$11689bo$11688b2o$11688bobo21$11711b2o$
11710b2o$11712bo32$11746bo$11745b2o$11745bobo43$11789b3o$11789bo$
11790bo52$11845bo$11844b2o$11844bobo35$11881b2o$11880b2o$11882bo32$
11916bo$11915b2o$11915bobo31$11947b3o$11947bo$11948bo52$12003bo$12002b
2o$12002bobo24$12028b2o$12027b2o$12029bo23$12053b2o$12052b2o$12054bo
32$12087b2o$12087bobo$12087bo27$12116b2o$12115b2o$12117bo28$12146b2o$
12145b2o$12147bo21$12169b2o$12168b2o$12170bo31$12203bo$12202b2o$12202b
obo25$12229b2o$12228b2o$12230bo32$12264bo$12263b2o$12263bobo29$12293b
3o$12293bo$12294bo52$12349bo$12348b2o$12348bobo27$12377b2o$12376b2o$
12378bo32$12412bo$12411b2o$12411bobo35$12447b3o$12447bo$12448bo53$
12503b2o$12502b2o$12504bo37$12542b2o$12541b2o$12543bo21$12565b2o$
12564b2o$12566bo31$12599bo$12598b2o$12598bobo25$12625b2o$12624b2o$
12626bo32$12660bo$12659b2o$12659bobo30$12690b3o$12690bo$12691bo21$
12713b3o$12713bo$12714bo22$12738b2o$12737b2o$12739bo23$12763b2o$12762b
2o$12764bo32$12797b2o$12797bobo$12797bo27$12826b2o$12825b2o$12827bo44$
12873bo$12872b2o$12872bobo45$12918b3o$12918bo$12919bo30$12951b2o$
12950b2o$12952bo66$13019b2o$13018b2o$13020bo32$13054bo$13053b2o$13053b
obo30$13084b3o$13084bo$13085bo21$13108b2o$13107b2o$13109bo21$13131b2o$
13130b2o$13132bo39$13171b3o$13171bo$13172bo68$13243bo$13242b2o$13242bo
bo47$13292bo$13291b2o$13291bobo32$13326bo$13325b2o$13325bobo51$13378b
2o$13378bobo$13378bo52$13432b2o$13431b2o$13433bo23$13457b2o$13456b2o$
13458bo32$13491b2o$13491bobo$13491bo27$13520b2o$13519b2o$13521bo34$
13556b2o$13555b2o$13557bo21$13579b2o$13578b2o$13580bo31$13613bo$13612b
2o$13612bobo31$13645b2o$13644b2o$13646bo34$13681b2o$13680b2o$13682bo
31$13714b2o$13713b2o$13715bo25$13740b3o$13740bo$13741bo30$13773b2o$
13772b2o$13774bo32$13808bo$13807b2o$13807bobo30$13838b3o$13838bo$
13839bo26$13867b2o$13866b2o$13868bo32$13902bo$13901b2o$13901bobo30$
13932b3o$13932bo$13933bo41$13976b2o$13975b2o$13977bo21$13999b2o$13998b
2o$14000bo31$14033bo$14032b2o$14032bobo56$14090b2o$14089b2o$14091bo21$
14113b2o$14112b2o$14114bo31$14147bo$14146b2o$14146bobo30$14178b2o$
14177b2o$14179bo21$14201b2o$14200b2o$14202bo31$14235bo$14234b2o$14234b
obo28$14264b2o$14263b2o$14265bo21$14287b2o$14286b2o$14288bo31$14321bo$
14320b2o$14320bobo30$14352b2o$14351b2o$14353bo21$14375b2o$14374b2o$
14376bo31$14409bo$14408b2o$14408bobo36$14447bo$14446b2o$14446bobo45$
14492b3o$14492bo$14493bo30$14525b2o$14524b2o$14526bo40$14567b2o$14566b
2o$14568bo32$14602bo$14601b2o$14601bobo30$14632b3o$14632bo$14633bo22$
14657b2o$14656b2o$14658bo32$14692bo$14691b2o$14691bobo30$14722b3o$
14722bo$14723bo21$14745b3o$14745bo$14746bo20$14769bo$14768b2o$14768bob
o47$14818bo$14817b2o$14817bobo30$14850bo$14849b2o$14849bobo22$14873b2o
$14872b2o$14874bo32$14908bo$14907b2o$14907bobo29$14937b3o$14937bo$
14938bo52$14993bo$14992b2o$14992bobo42$15036b2o$15035b2o$15037bo21$
15059b2o$15058b2o$15060bo31$15093bo$15092b2o$15092bobo30$15124b2o$
15123b2o$15125bo21$15147b2o$15146b2o$15148bo31$15181bo$15180b2o$15180b
obo22$15203b3o$15203bo$15204bo23$15229b2o$15228b2o$15230bo32$15264bo$
15263b2o$15263bobo30$15294b3o$15294bo$15295bo21$15319bo$15318b2o$
15318bobo45$15364b3o$15364bo$15365bo30$15397b2o$15396b2o$15398bo35$
15435bo$15434b2o$15434bobo45$15480b3o$15480bo$15481bo30$15513b2o$
15512b2o$15514bo55$15570b2o$15569b2o$15571bo21$15593b2o$15592b2o$
15594bo31$15627bo$15626b2o$15626bobo22$15649b3o$15649bo$15650bo21$
15673b2o$15672b2o$15674bo32$15708bo$15707b2o$15707bobo30$15738b3o$
15738bo$15739bo21$15762b2o$15762bobo$15762bo39$15803b2o$15802b2o$
15804bo32$15838bo$15837b2o$15837bobo33$15871b3o$15871bo$15872bo53$
15927b2o$15926b2o$15928bo30$15959b2o$15958b2o$15960bo32$15994bo$15993b
2o$15993bobo31$16025b3o$16025bo$16026bo52$16081bo$16080b2o$16080bobo
40$16122b2o$16121b2o$16123bo21$16145b2o$16144b2o$16146bo31$16179bo$
16178b2o$16178bobo22$16202b2o$16202bobo$16202bo41$16245b2o$16244b2o$
16246bo32$16280bo$16279b2o$16279bobo30$16310b3o$16310bo$16311bo45$
16358b2o$16357b2o$16359bo21$16381b2o$16380b2o$16382bo31$16415bo$16414b
2o$16414bobo22$16437b3o$16437bo$16438bo22$16462b2o$16461b2o$16463bo21$
16485b2o$16484b2o$16486bo31$16519bo$16518b2o$16518bobo32$16552b2o$
16551b2o$16553bo21$16575b2o$16574b2o$16576bo31$16609bo$16608b2o$16608b
obo30$16640b2o$16639b2o$16641bo21$16663b2o$16662b2o$16664bo31$16697bo$
16696b2o$16696bobo27$16725b2o$16724b2o$16726bo32$16760bo$16759b2o$
16759bobo30$16790b3o$16790bo$16791bo21$16813b3o$16813bo$16814bo26$
16842b2o$16841b2o$16843bo23$16867b2o$16866b2o$16868bo32$16901b2o$
16901bobo$16901bo27$16930b2o$16929b2o$16931bo34$16967bo$16966b2o$
16966bobo47$17016bo$17015b2o$17015bobo36$17054bo$17053b2o$17053bobo25$
17081bo$17080b2o$17080bobo36$17118b2o$17117b2o$17119bo22$17142b2o$
17141b2o$17143bo58$17202b2o$17201b2o$17203bo22$17226b2o$17225b2o$
17227bo66$17294b2o$17293b2o$17295bo21$17317b2o$17316b2o$17318bo31$
17351bo$17350b2o$17350bobo22$17373b3o$17373bo$17374bo23$17399b2o$
17398b2o$17400bo32$17434bo$17433b2o$17433bobo30$17464b3o$17464bo$
17465bo21$17487b3o$17487bo$17488bo22$17512b2o$17511b2o$17513bo21$
17535b2o$17534b2o$17536bo31$17569bo$17568b2o$17568bobo21$17591b2o$
17590b2o$17592bo32$17626bo$17625b2o$17625bobo43$17669b3o$17669bo$
17670bo52$17725bo$17724b2o$17724bobo26$17752b2o$17751b2o$17753bo21$
17775b2o$17774b2o$17776bo31$17809bo$17808b2o$17808bobo36$17846b2o$
17845b2o$17847bo21$17869b2o$17868b2o$17870bo31$17903bo$17902b2o$17902b
obo36$17940b2o$17939b2o$17941bo21$17963b2o$17962b2o$17964bo31$17997bo$
17996b2o$17996bobo22$18019b3o$18019bo$18020bo22$18044b2o$18043b2o$
18045bo21$18067b2o$18066b2o$18068bo31$18101bo$18100b2o$18100bobo28$
18130b2o$18129b2o$18131bo21$18153b2o$18152b2o$18154bo31$18187bo$18186b
2o$18186bobo22$18209b3o$18209bo$18210bo21$18233b2o$18232b2o$18234bo32$
18268bo$18267b2o$18267bobo43$18311b3o$18311bo$18312bo52$18367bo$18366b
2o$18366bobo39$18407b2o$18406b2o$18408bo32$18442bo$18441b2o$18441bobo
30$18472b3o$18472bo$18473bo26$18501b2o$18500b2o$18502bo32$18536bo$
18535b2o$18535bobo30$18566b3o$18566bo$18567bo21$18590b2o$18590bobo$
18590bo39$18631b2o$18630b2o$18632bo32$18666bo$18665b2o$18665bobo41$
18707b3o$18707bo$18708bo52$18763bo$18762b2o$18762bobo34$18798b2o$
18797b2o$18799bo21$18821b2o$18820b2o$18822bo31$18855bo$18854b2o$18854b
obo30$18887bo$18886b2o$18886bobo47$18936bo$18935b2o$18935bobo35$18972b
2o$18972bobo$18972bo35$19009b2o$19008b2o$19010bo74$19085b2o$19084b2o$
19086bo32$19120bo$19119b2o$19119bobo30$19150b3o$19150bo$19151bo45$
19198b2o$19197b2o$19199bo21$19221b2o$19220b2o$19222bo31$19255bo$19254b
2o$19254bobo38$19294b2o$19293b2o$19295bo21$19317b2o$19316b2o$19318bo
31$19351bo$19350b2o$19350bobo22$19374b2o$19374bobo$19374bo31$19407b2o$
19406b2o$19408bo32$19442bo$19441b2o$19441bobo37$19479b3o$19479bo$
19480bo52$19535bo$19534b2o$19534bobo48$19584b2o$19583b2o$19585bo22$
19608b2o$19607b2o$19609bo54$19664b2o$19663b2o$19665bo22$19688b2o$
19687b2o$19689bo60$19751bo$19750b2o$19750bobo45$19796b3o$19796bo$
19797bo30$19829b2o$19828b2o$19830bo55$19887bo$19886b2o$19886bobo45$
19932b3o$19932bo$19933bo30$19965b2o$19964b2o$19966bo51$20018b2o$20017b
2o$20019bo21$20041b2o$20040b2o$20042bo31$20075bo$20074b2o$20074bobo30$
20107bo$20106b2o$20106bobo45$20152b3o$20152bo$20153bo30$20185b2o$
20184b2o$20186bo21$20208b2o$20207b2o$20209bo21$20231b2o$20230b2o$
20232bo39$20271b3o$20271bo$20272bo70$20344b2o$20343b2o$20345bo21$
20367b2o$20366b2o$20368bo31$20401bo$20400b2o$20400bobo22$20424b2o$
20423b2o$20425bo23$20449b2o$20448b2o$20450bo32$20483b2o$20483bobo$
20483bo27$20512b2o$20511b2o$20513bo25$20538b3o$20538bo$20539bo27$
20568b2o$20567b2o$20569bo21$20591b2o$20590b2o$20592bo31$20625bo$20624b
2o$20624bobo30$20657bo$20656b2o$20656bobo47$20706bo$20705b2o$20705bobo
32$20740bo$20739b2o$20739bobo51$20792b2o$20792bobo$20792bo69$20863b2o$
20862b2o$20864bo32$20898bo$20897b2o$20897bobo30$20928b3o$20928bo$
20929bo21$20953bo$20952b2o$20952bobo45$20998b3o$20998bo$20999bo30$
21031b2o$21030b2o$21032bo33$21067bo$21066b2o$21066bobo45$21112b3o$
21112bo$21113bo30$21145b2o$21144b2o$21146bo32$21179b2o$21178b2o$21180b
o32$21214bo$21213b2o$21213bobo30$21244b3o$21244bo$21245bo86$21333b2o$
21332b2o$21334bo32$21368bo$21367b2o$21367bobo30$21398b3o$21398bo$
21399bo32$21433b2o$21432b2o$21434bo32$21468bo$21467b2o$21467bobo30$
21498b3o$21498bo$21499bo23$21524b2o$21523b2o$21525bo22$21548b2o$21547b
2o$21549bo58$21608b2o$21607b2o$21609bo22$21632b2o$21631b2o$21633bo69$
21703b2o$21702b2o$21704bo32$21738bo$21737b2o$21737bobo30$21768b3o$
21768bo$21769bo21$21792b2o$21791b2o$21793bo21$21815b2o$21814b2o$21816b
o39$21855b3o$21855bo$21856bo51$21909b2o$21908b2o$21910bo32$21944bo$
21943b2o$21943bobo29$21973b3o$21973bo$21974bo53$22029b2o$22028b2o$
22030bo41$22073bo$22072b2o$22072bobo45$22118b3o$22118bo$22119bo30$
22151b2o$22150b2o$22152bo29$22182b2o$22181b2o$22183bo21$22205b2o$
22204b2o$22206bo31$22239bo$22238b2o$22238bobo36$22276b2o$22275b2o$
22277bo21$22299b2o$22298b2o$22300bo31$22333bo$22332b2o$22332bobo30$
22365bo$22364b2o$22364bobo45$22410b3o$22410bo$22411bo30$22443b2o$
22442b2o$22444bo34$22479b2o$22478b2o$22480bo32$22514bo$22513b2o$22513b
obo43$22557b3o$22557bo$22558bo52$22613bo$22612b2o$22612bobo21$22635b2o
$22634b2o$22636bo32$22670bo$22669b2o$22669bobo37$22707b3o$22707bo$
22708bo52$22763bo$22762b2o$22762bobo29$22793b2o$22792b2o$22794bo32$
22828bo$22827b2o$22827bobo29$22857b3o$22857bo$22858bo52$22913bo$22912b
2o$22912bobo22$22936b2o$22935b2o$22937bo22$22960b2o$22959b2o$22961bo
54$23016b2o$23015b2o$23017bo22$23040b2o$23039b2o$23041bo80$23122b2o$
23121b2o$23123bo21$23145b2o$23144b2o$23146bo31$23179bo$23178b2o$23178b
obo24$23205bo$23204b2o$23204bobo22$23229bo$23228b2o$23228bobo34$23264b
2o$23264bobo$23264bo31$23296b3o$23296bo$23297bo21$23319b3o$23319bo$
23320bo23$23345b2o$23344b2o$23346bo32$23380bo$23379b2o$23379bobo30$
23410b3o$23410bo$23411bo34$23447b2o$23446b2o$23448bo32$23482bo$23481b
2o$23481bobo30$23512b3o$23512bo$23513bo21$23536b2o$23535b2o$23537bo23$
23561b2o$23560b2o$23562bo32$23595b2o$23595bobo$23595bo27$23624b2o$
23623b2o$23625bo27$23653b2o$23652b2o$23654bo32$23688bo$23687b2o$23687b
obo30$23718b3o$23718bo$23719bo21$23742b2o$23741b2o$23743bo23$23767b2o$
23766b2o$23768bo32$23801b2o$23801bobo$23801bo27$23830b2o$23829b2o$
23831bo35$23867b2o$23866b2o$23868bo34$23903b2o$23902b2o$23904bo31$
23936b2o$23935b2o$23937bo25$23962b3o$23962bo$23963bo25$23990b2o$23989b
2o$23991bo21$24013b2o$24012b2o$24014bo31$24047bo$24046b2o$24046bobo38$
24086b2o$24085b2o$24087bo21$24109b2o$24108b2o$24110bo31$24143bo$24142b
2o$24142bobo40$24184b2o$24183b2o$24185bo21$24207b2o$24206b2o$24208bo
31$24241bo$24240b2o$24240bobo22$24264b2o$24264bobo$24264bo41$24307b2o$
24306b2o$24308bo32$24342bo$24341b2o$24341bobo31$24373b3o$24373bo$
24374bo52$24429bo$24428b2o$24428bobo41$24471b2o$24470b2o$24472bo32$
24506bo$24505b2o$24505bobo30$24536b3o$24536bo$24537bo21$24559b3o$
24559bo$24560bo24$24586b2o$24585b2o$24587bo23$24611b2o$24610b2o$24612b
o32$24645b2o$24645bobo$24645bo27$24674b2o$24673b2o$24675bo25$24701b2o$
24700b2o$24702bo32$24736bo$24735b2o$24735bobo65$24801b3o$24801bo$
24802bo53$24857b2o$24856b2o$24858bo47$24906b2o$24905b2o$24907bo21$
24929b2o$24928b2o$24930bo31$24963bo$24962b2o$24962bobo35$24999b2o$
24998b2o$25000bo32$25034bo$25033b2o$25033bobo31$25065b3o$25065bo$
25066bo52$25121bo$25120b2o$25120bobo40$25162b2o$25161b2o$25163bo21$
25185b2o$25184b2o$25186bo31$25219bo$25218b2o$25218bobo22$25241b3o$
25241bo$25242bo22$25266b2o$25265b2o$25267bo21$25289b2o$25288b2o$25290b
o31$25323bo$25322b2o$25322bobo29$25353b2o$25352b2o$25354bo34$25389b2o$
25388b2o$25390bo31$25422b2o$25421b2o$25423bo25$25448b3o$25448bo$25449b
o28$25479b2o$25478b2o$25480bo34$25515b2o$25514b2o$25516bo31$25548b2o$
25547b2o$25549bo25$25574b3o$25574bo$25575bo25$25602b2o$25601b2o$25603b
o23$25627b2o$25626b2o$25628bo32$25661b2o$25661bobo$25661bo27$25690b2o$
25689b2o$25691bo39$25731b2o$25730b2o$25732bo32$25766bo$25765b2o$25765b
obo47$25813b3o$25813bo$25814bo52$25869bo$25868b2o$25868bobo24$25894b2o
$25893b2o$25895bo21$25917b2o$25916b2o$25918bo31$25951bo$25950b2o$
25950bobo40$25992b2o$25991b2o$25993bo21$26015b2o$26014b2o$26016bo31$
26049bo$26048b2o$26048bobo26$26076b2o$26075b2o$26077bo22$26100b2o$
26099b2o$26101bo54$26156b2o$26155b2o$26157bo22$26180b2o$26179b2o$
26181bo59$26241b2o$26240b2o$26242bo32$26276bo$26275b2o$26275bobo45$
26321b3o$26321bo$26322bo52$26377bo$26376b2o$26376bobo33$26411b2o$
26410b2o$26412bo32$26446bo$26445b2o$26445bobo33$26479b3o$26479bo$
26480bo52$26535bo$26534b2o$26534bobo32$26568b2o$26567b2o$26569bo21$
26591b2o$26590b2o$26592bo31$26625bo$26624b2o$26624bobo23$26649b2o$
26648b2o$26650bo34$26685b2o$26684b2o$26686bo31$26718b2o$26717b2o$
26719bo25$26744b3o$26744bo$26745bo33$26781bo$26780b2o$26780bobo45$
26826b3o$26826bo$26827bo30$26859b2o$26858b2o$26860bo28$26889b2o$26888b
2o$26890bo34$26925b2o$26924b2o$26926bo31$26958b2o$26957b2o$26959bo25$
26984b3o$26984bo$26985bo21$27007b3o$27007bo$27008bo26$27036b2o$27035b
2o$27037bo21$27059b2o$27058b2o$27060bo31$27093bo$27092b2o$27092bobo22$
27115b3o$27115bo$27116bo20$27138b2o$27138bobo$27138bo25$27165b2o$
27164b2o$27166bo32$27200bo$27199b2o$27199bobo30$27230b3o$27230bo$
27231bo25$27258b2o$27257b2o$27259bo21$27281b2o$27280b2o$27282bo31$
27315bo$27314b2o$27314bobo22$27338b2o$27337b2o$27339bo21$27361b2o$
27360b2o$27362bo39$27401b3o$27401bo$27402bo43$27447b2o$27446b2o$27448b
o32$27482bo$27481b2o$27481bobo30$27512b3o$27512bo$27513bo24$27539b2o$
27538b2o$27540bo32$27574bo$27573b2o$27573bobo39$27613b3o$27613bo$
27614bo53$27669b2o$27668b2o$27670bo32$27703b2o$27702b2o$27704bo32$
27738bo$27737b2o$27737bobo28$27767b2o$27767bobo$27767bo39$27808b2o$
27807b2o$27809bo89$27899b2o$27898b2o$27900bo32$27934bo$27933b2o$27933b
obo30$27964b3o$27964bo$27965bo25$27992b2o$27991b2o$27993bo21$28015b2o$
28014b2o$28016bo31$28049bo$28048b2o$28048bobo32$28082b2o$28081b2o$
28083bo21$28105b2o$28104b2o$28106bo31$28139bo$28138b2o$28138bobo23$
28163b2o$28162b2o$28164bo32$28198bo$28197b2o$28197bobo30$28228b3o$
28228bo$28229bo21$28251b3o$28251bo$28252bo23$28277b2o$28276b2o$28278bo
32$28312bo$28311b2o$28311bobo33$28345b3o$28345bo$28346bo52$28401bo$
28400b2o$28400bobo31$28433b2o$28432b2o$28434bo32$28468bo$28467b2o$
28467bobo29$28497b3o$28497bo$28498bo52$28553bo$28552b2o$28552bobo25$
28579b2o$28578b2o$28580bo32$28614bo$28613b2o$28613bobo30$28644b3o$
28644bo$28645bo21$28667b3o$28667bo$28668bo26$28696b2o$28695b2o$28697bo
23$28721b2o$28720b2o$28722bo32$28755b2o$28755bobo$28755bo27$28784b2o$
28783b2o$28785bo24$28811bo$28810b2o$28810bobo47$28860bo$28859b2o$
28859bobo30$28892bo$28891b2o$28891bobo34$28927b2o$28926b2o$28928bo32$
28962bo$28961b2o$28961bobo37$28999b3o$28999bo$29000bo53$29055b2o$
29054b2o$29056bo29$29086b2o$29085b2o$29087bo23$29111b2o$29110b2o$
29112bo32$29145b2o$29145bobo$29145bo27$29174b2o$29173b2o$29175bo30$
29206b2o$29205b2o$29207bo23$29231b2o$29230b2o$29232bo32$29265b2o$
29265bobo$29265bo27$29294b2o$29293b2o$29295bo30$29326b2o$29325b2o$
29327bo21$29349b2o$29348b2o$29350bo31$29383bo$29382b2o$29382bobo56$
29440b2o$29439b2o$29441bo21$29463b2o$29462b2o$29464bo31$29497bo$29496b
2o$29496bobo33$29531b2o$29530b2o$29532bo32$29566bo$29565b2o$29565bobo
35$29601b3o$29601bo$29602bo52$29657bo$29656b2o$29656bobo!
See the efficiency :) ... it is very close to 3 simkin gliders per glider.
Code needing pollishing (still too many debug messages):

Code: Select all

class SimkinECCAp2compiler(object):

    def load_recipes(self):
        recipe_l = 64
        with open('data\\SimkinECCA.txt') as f:
            rows=f.read().split("\n")
            for row in rows:
                sections = row.split("--")
                if sections[0]!="":
                    recipe_l += 1
                    name = sections[2].strip()
                    self.name2l[name] = chr(recipe_l)
                    self.l2name[chr(recipe_l)] = name
                    self.recipes[name] = (sections[0].strip(),sections[1].strip())

    def pack_letters(self, str):
        last_ch = ""
        last_cnt = 0
        res = ""
        #print(f"packing letters {str}")
        for ch in str:
            if ch==last_ch:
                last_cnt += 1
            else:
                if last_cnt>0:
                    res += last_ch
                if last_cnt>2:
                    res += f"*{last_cnt}"
                elif last_cnt==2:
                    res += last_ch
                last_cnt = 1
                last_ch = ch
        if last_cnt>0:
            res += last_ch
        if last_cnt>2:
            res += f"*{last_cnt}"
        elif last_cnt==2:
            res += last_ch
        return res

    # add delay component to recipes and
    # do Bellman Ford on recipes to calculate optimal movement
    def make_move_table(self):
        movekeys = []
        plusMove, plusEff, minusMove, minusEff = "",0,"",0
        for recipekey in self.recipes:
            recipe = self.recipes[recipekey][0].split(" ")
            info = self.recipes[recipekey][1].split("l") # works only for 270 degree recipes
            sg = int(info[0])
            delay = -120*sg
            if recipe[0][0]=="+": # the only not synced recipe
                delay += int(recipe[0][1:])
                self.recipes[recipekey]=(self.recipes[recipekey][0],self.recipes[recipekey][1],delay,sg)
            elif recipe[0][0]=="[":
                for td_i in range(1,len(recipe)):
                    if recipe[td_i][0]=="(":
                        delay+=int(recipe[td_i][1:-1])
                    elif recipe[td_i][0]=="[":
                        #synchronization not included in delay info
                        #but only allows inserting +8X ... should be preceded by (A) matching the [b] rounding
                        delay = delay #syntax trash
                    else:
                        delay+=int(recipe[td_i])
                self.recipes[recipekey]=(self.recipes[recipekey][0],self.recipes[recipekey][1],delay,sg)
            if len(info)==1:
                movekeys.append(recipekey)
                if delay>plusEff:
                    plusEff=delay
                    plusMove=self.name2l[recipekey]
                if delay<minusEff:
                    minusEff=delay
                    minusMove=self.name2l[recipekey]

        if plusEff != 1:
            print(f"Expected +1 be the only plus move! {plusEff}")
        if minusEff != -150:
            print(f"Expected -150 be the best minus move! {minusEff}")
        print(f"long range best moves {plusMove}={self.l2name[plusMove]} {minusMove}={self.l2name[minusMove]}")

        #BellmanFord
        for i in range(8):
            # changing the collision timeposition by 0
            self.m[f"[{i}]_0"]=("", 0, 0)
        plusPeriod,minusPeriod=8,-144
        maxPlus,minMinus=1+plusPeriod,-1+minusPeriod # -150 for faster stabilisation
        toFindPeriod = True
        orig_moves = [k for k in movekeys]
        print ("table computation starts")
        progress = True
        def updateIfBetter(key, move, cost, sgliders):
            if (not key in self.m) or (self.m[key][1] > cost):
                self.m[key] = (move, cost, sgliders)
                return True
            elif self.m[key][1] == cost:
                #we prefere plus moves at the end
                for i in range(1,len(self.m[key][0])):
                    if i>len(move):
                        break
                    lo = self.m[key][0][-i]
                    ln = move[-i]
                    if lo!=ln:
                        if ln==plusMove:
                            #print(f"A-tail better {self.pack_letters(move)} then {self.pack_letters(self.m[key][0])} i,lo,ln:{i},{lo},{ln}")
                            self.m[key] = (move, cost, sgliders)
                        return ln==plusMove
            return False

        while toFindPeriod:
            progress = True
            #print ("Finding period")
            while progress:
                progress = False
                old_moves = [k for k in self.m]
                #print ("Doing progress")
                for edge in orig_moves:
                    erecipe = self.recipes[edge][0].split(" ")
                    edge_str = self.name2l[edge]
                    sg = self.recipes[edge][3]
                    delay = self.recipes[edge][2]
                    ecost = 120*sg + delay # delay has 120*sg subtracted
                    #print(f"edge {edge} '{edge_str}' {delay} {ecost}")
                    if erecipe[0][0]=="+":
                        for src_vertex in old_moves:
                            src = src_vertex.split("_")
                            pos = int(src[1])+delay
                            if pos<=maxPlus:
                                key = f"{src[0]}_{pos}"
                                sgliders = self.m[src_vertex][2] + sg
                                cost = self.m[src_vertex][1] + ecost
                                move = self.m[src_vertex][0] + edge_str
                                new = updateIfBetter(key, move, cost, sgliders)
                                if not progress and new:
                                #if new:
                                    #print (f"progress moves[{key}]=({self.pack_letters(move)}, {cost})")
                                    progress = True
                    else:
                        sync = int(erecipe[0][1:-1])
                        for src_vertex in old_moves:
                            src = src_vertex.split("_")
                            vpos = int(src[0][1:-1])+int(src[1])
                            if vpos % 8 == sync:
                                pos = int(src[1])+delay
                                if pos>=minMinus-150:
                                    key = f"{src[0]}_{pos}"
                                    sgliders = self.m[src_vertex][2] + sg
                                    cost = self.m[src_vertex][1] + ecost
                                    move = self.m[src_vertex][0] + edge_str
                                    new = updateIfBetter(key, move, cost, sgliders)
                                    if not progress and new:
                                    #if new:
                                        #print (f"progress moves[{key}]=({self.pack_letters(move)}, {cost})")
                                        progress = True
            for n in range(minMinus,maxPlus+1):
                row = f"_{n}"
                for s in range(8):
                    key = f"[{s}]_{n}"
                    if key in self.m:
                        row += f" {self.pack_letters(self.m[key][0])}({self.m[key][1]},{self.m[key][2]})"
                    else:
                        row += " ?"
                #print(row)
            toFindPeriod = False
            for n in range(maxPlus,maxPlus-plusPeriod-1,-1):
                if toFindPeriod:
                    break
                for s in range(8):
                    toFindPeriod = True
                    key = f"[{s}]_{n}"
                    if key in self.m:
                        if (self.m[key][0].find(plusMove*8)>=0):
                            toFindPeriod = False
                    if toFindPeriod:
                        maxPlus = n + plusPeriod + 1
                        print (f"maxPlus changed to {n}+{plusPeriod+1}={maxPlus}")
                        break
            toFindPlus = toFindPeriod
            toFindPeriod = False
            for n in range(minMinus,minMinus-minusPeriod+1):
                if toFindPeriod:
                    break
                for s in range(8):
                    toFindPeriod = True
                    key = f"[{s}]_{n}"
                    if key in self.m:
                        if (self.m[key][0].find(minusMove+plusMove*6)>=0):
                            toFindPeriod = False
                    if toFindPeriod:
                        minMinus = n + minusPeriod - 1
                        print (f"minMinus changed to {n}+{minusPeriod-1}={minMinus}")
                        break
            toFindPeriod = toFindPeriod or toFindPlus
            #toFindPeriod = toFindPlus
        all_moves = [k for k in self.m]
        for k in all_moves:
            pos = int(k.split("_")[1])
            if (pos<minMinus) or (pos>maxPlus):
                del self.m[k]
        self.mMinMinus = minMinus
        self.mMaxPlus = maxPlus
        self.mMinusPeriod = minusPeriod
        self.mPlusPeriod = plusPeriod
        self.mMinus = minusMove
        self.mPlus = plusMove

        print ("get_move table:")
        for n in range(minMinus-10,maxPlus+11):
            row = f"_{n}"
            for s in range(8):
                move = self.get_move(s,n)
                row += f" {self.pack_letters(move[0])}({move[1]},{move[2]})"
            print(row)

    #let us make table of optpimal single emissions. The problem is we do not know the continuation and the total cost depends on the followup.
    #fortunately for the same number of used simkin gliders the recipe able to finish in shorter time (able to do earlier collision)
    #is definitely better (it can delay the followup to match the other)
    #so we can store the best recipes for each number of destroyed simkin gliders
    #the best recipe using the minimal number of simkin gliders should be stored, (followup with increased lane)
    #but for recipes using more simkin gliders (followup with decreased lane), they should be compared to smaller number
    #of simkin gliders followed by a "B/C/D" move. If they are dominated, there is no need to store them.
    def make_l_table(self):
        def dominated(sync,muster,questioned):
            #print(f"dom [{sync}],({self.pack_letters(muster[0])},{muster[1]},{muster[2]}),({self.pack_letters(questioned[0])},{questioned[1]},{questioned[2]})")
            if muster[2]>questioned[2]: #actually we would not ask
                return False
            elif muster[2]==questioned[2]: #actually we would not ask either
                return muster[1]<=questioned[1]
            else:
                dist = questioned[1]-muster[1] - 120*(questioned[2]-muster[2])
                move = self.get_move((sync+muster[1])%8,dist)
                #print (f"is {(self.pack_letters(muster[0]),muster[1],muster[2])} dominating {(self.pack_letters(questioned[0]),questioned[1],questioned[2])} ... dist{dist} {move[1]}+{muster[1]}={move[1]+muster[1]}")
                return move[1]+muster[1]<=questioned[1]

        def updateIfBetter(key, move, cost, sgliders):
            #print(f"uib {key},{self.pack_letters(move)},{cost},{sgliders}")
            cur_moveitem = (move, cost, sgliders)
            if (not key in self.l):
                self.l[key]=[cur_moveitem]
                return True
            inserted, try_insert = False, True
            for r in range(len(self.l[key])):
                if try_insert:
                    if self.l[key][r][2] > cur_moveitem[2]:
                        cur_moveitem, self.l[key][r], inserted = self.l[key][r], cur_moveitem, True
                    elif self.l[key][r][2] == cur_moveitem[2]:
                        if self.l[key][r][1] > cur_moveitem[1]:
                            self.l[key][r], inserted, try_insert = cur_moveitem, True, False
                        else:
                            return False

            if try_insert:
                if not dominated(int(key[1]),self.l[key][-1], cur_moveitem):
                    self.l[key].append(cur_moveitem)
                    inserted = True
            if inserted:
                #print (f"recheck {range(1,len(self.l[key]))}")
                i=1
                while i<len(self.l[key]):
                    if dominated(int(key[1]),self.l[key][-i-1],self.l[key][-i]):
                        #print (f"removing dominated {self.l[key][-i]}, leaving {self.l[key][-i-1]}")
                        del self.l[key][-i]
                        if i>1:
                            i-=1
                    else:
                        i+=1
            return inserted

        for recipekey in self.recipes:
            info = self.recipes[recipekey][1].split("l") # works only for 270 degree recipes
            if len(info)==2: #single glider emissions
                ginfo = info[1].split(",")
                phase = "eo"[int(ginfo[0])%2]
                lane = int(ginfo[1])
                sync = int(self.recipes[recipekey][0][1])
                sg = self.recipes[recipekey][3]
                cost = self.recipes[recipekey][2]+120*sg # delay has 120*sg subtracted
                updateIfBetter(f"{[sync]}_{phase}{lane}",self.name2l[recipekey],cost,sg)
                updateIfBetter(f"{[sync]}_b{lane}",self.name2l[recipekey],cost,sg)
        plusPeriod,minusPeriod=2,-36
        maxPlus,minMinus=self.mMaxPlus//4,self.mMinMinus//4
        prevMaxPlus,prevMinMinus=-1,0
        toFindPeriod = True
        orig_moves = [k for k in self.l]
        print ("table computation starts")
        def lane_recipes(lane):
            print (f"lane {lane}")
            for omove in orig_moves:
                #print(omove)
                os=int(omove[1])
                op=omove[4]
                olane=int(omove[5:])
                shift = lane-olane
                if shift%2 == 0:
                    for oinfo in self.l[omove]:
                        for s in range(8):
                            minfo = self.get_move(s,os-s+4*shift)
                            updateIfBetter(f"{[s]}_{op}{lane}",minfo[0]+oinfo[0],minfo[1]+oinfo[1],minfo[2]+oinfo[2])

        def print_ltable(phase,minM,maxP):
            print (f"l_table {phase}({minM},{maxP})")
            for n in range(minM,maxP+1):
                row = f"_{phase}{n}"
                for s in range(8):
                    key = f"[{s}]_{phase}{n}"
                    if key in self.l:
                        alt = ""
                        for lmove in self.l[key]:
                            alt += f",{self.pack_letters(lmove[0])}({lmove[1]},{lmove[2]})"
                        row += " "+alt[1:]
                    else:
                        row += " ?"
                print(row)

        while toFindPeriod:
            for lane in range(prevMaxPlus+1,maxPlus+1):
                 lane_recipes(lane)
            for lane in range(prevMinMinus-1,minMinus-1,-1):
                 lane_recipes(lane)

            #for phase in "beo":
            #    print_ltable(phase,minMinus,maxPlus)
            prevMinMinus,prevMaxPlus = minMinus,maxPlus

            toFindPeriod = False
            for n in range(maxPlus,maxPlus-plusPeriod-1,-1):
                if toFindPeriod:
                    break
                for s in range(8):
                    if toFindPeriod:
                        break
                    for phase in "beo":
                        toFindPeriod = True
                        key = f"[{s}]_{phase}{n}"
                        if key in self.l:
                            for option in self.l[key]:
                                if (option[0].find(self.mPlus*8)>=0):
                                    toFindPeriod = False
                        if toFindPeriod:
                            maxPlus = n + plusPeriod + 1
                            print (f"maxPlus changed to {n}({s}{phase})+{plusPeriod+1}={maxPlus}")
                            break
            toFindPlus = toFindPeriod
            toFindPeriod = False
            for n in range(minMinus,minMinus-minusPeriod+1):
                if toFindPeriod:
                    break
                for s in range(8):
                    if toFindPeriod:
                        break
                    for phase in "beo":
                        toFindPeriod = True
                        key = f"[{s}]_{phase}{n}"
                        if key in self.l:
                            for option in self.l[key]:
                                if (option[0].find(self.mMinus+self.mPlus*6)>=0):
                                    toFindPeriod = False
                        if toFindPeriod:
                            minMinus = n + minusPeriod - 1
                            print (f"minMinus changed to {n}({s}{phase})+{minusPeriod-1}={minMinus}")
                            break
            toFindPeriod = toFindPeriod or toFindPlus
            #toFindPeriod = toFindPlus

        self.lMinMinus = minMinus
        self.lMaxPlus = maxPlus
        self.lMinusPeriod = minusPeriod
        self.lPlusPeriod = plusPeriod

        print ("get_loptions tables:")
        for phase in "beo":
            for n in range(minMinus-10,maxPlus+11):
                row = f"_{phase}{n}"
                for s in range(8):
                    alt = ""
                    for lmove in self.get_loptions(s,phase,n):
                        alt += f",{self.pack_letters(lmove[0])}({lmove[1]},{lmove[2]})"
                    row += " "+alt[1:]
                print(row)

    # let us do not consider building and destroying the simkin gun and expecting the recipe contain lanes not interacting with the simkin gun
    # do not use anchor moves and their destroyal at the first try
    def __init__(self, initial_direction=1):

        self.cur = 0 # position of the collision of the simking glider with gliders sent at next_available_tick would happen in "1/8 fd"
        # glider lanes in recipes are relative to 2*(self.cur//8)
        self.recipes = {} # imported base recipes "{name}"->(exttimedeltas, description, delay, sgliders) -- delay, sgliders added by make_move_table
        self.m = {} # arm moves "[{sync}]_{delta}"->(letterstring, cost, sgliders)
        self.l = {} # single emissions which could be optimal "[{sync}]_{phase}{lanedist of correct parity}"->[(letterstring, cost, sgliders)]
        # delay = cost - 120*sgliders ... (change of cur)
        # the m,l would be formulated in recipe names as the "possibly optimal" recipes would be after some preperiod periodic with respect to both 
        #increasing/decreasing lane distances, the recipes would be tabulated till the period appears and function replaying to requests in the periodic portion would be answered
        #using a finite portion of the table. We know the most efficient move considering self.cur decrease would be "m2", so when m2 m2 apears in the recipe, we expect we are already
        #in the cycle. If it happened for 144 units (the move size) we are in the periodic portion of the function
        #synchronization wait would be on the other end of the table.
        #self.[X].minindex, self.[X].maxindex for X in "m", "l" would be used by the tablereading function.
        self.l2name = {} # translation from compact form to original names
        self.name2l = {}  # translation from original names to compact form
        # names2exttimedeltas transation to recipe including (a)[b]+c operands
        # jointimedeltas transation to recipe possibly including [b]+c only on start and (a) only on both ends
        self.load_recipes()
        self.make_move_table()
        self.make_l_table()
        self.delayed2, self.delayed1 = {}, {} # portions of candidate salvas not yet decided to connect to the recipe, delayed2 does not contain last 2 gliders, delayed1 does not contain last glider (the glider currently considered)
        # curAfterLastEmission -> (letterstring,cost)
        self.delayed = {} # curerntly working on similarly as self.delayed1, self.delayed2 to be "rotated" after all options are processed
        # curAfterLastEmission -> ((predecessorkey,predecessorlevel,letterstring after predecessor),cost)
        self.output = ""
        self.prev_goptions = [] # TODO to be used for combined emissions

    #(letterstring, cost, sgliders)
    def get_move(self, sync, dist):
        #print (f"get_move({sync},{dist})")
        if dist < self.mMinMinus:
            e = (dist - self.mMinMinus) // (-self.mMinusPeriod)
            moveBase = self.m[f"[{sync}]_{dist+e*self.mMinusPeriod}"]
            rpos = moveBase[0].find(self.mMinus+self.mPlus*6)
            move = moveBase[0][:rpos] + (self.mMinus+self.mPlus*6)*(-e) + moveBase[0][rpos:]
            cost = moveBase[1]-e*96
            sg = moveBase[2]-e*2
            ret=(move, cost, sg)
        elif dist > self.mMaxPlus:
            e = (self.mMaxPlus - dist) // self.mPlusPeriod
            moveBase = self.m[f"[{sync}]_{dist+e*self.mPlusPeriod}"]
            rpos = moveBase[0].find(self.mPlus*8)
            move = moveBase[0][:rpos] + (self.mPlus*8)*(-e) + moveBase[0][rpos:]
            cost = moveBase[1]-e*8
            sg = moveBase[2]-e*0
            ret=(move, cost, sg)
        else:
            ret = self.m[f"[{sync}]_{dist}"]
        return ret
    #[(letterstring, cost, sgliders)]
    def get_loptions(self, sync, phase, lanedist):
        #print (f"get_move({sync},{dist})")
        options=[]
        if lanedist < self.lMinMinus:
            e = (lanedist - self.lMinMinus) // (-self.lMinusPeriod)
            key = f"[{sync}]_{phase}{lanedist+e*self.lMinusPeriod}"
            for o in self.l[key]:
                rpos = o[0].find(self.mMinus+self.mPlus*6)
                move = o[0][:rpos] + (self.mMinus+self.mPlus*6)*(-e) + o[0][rpos:]
                cost = o[1]-e*96
                sg = o[2]-e*2
                options.append((move,cost,sg))
        elif lanedist > self.lMaxPlus:
            e = (self.lMaxPlus - lanedist) // self.lPlusPeriod
            key = f"[{sync}]_{phase}{lanedist+e*self.lPlusPeriod}"
            for o in self.l[key]:
                rpos = o[0].find(self.mPlus*8)
                move = o[0][:rpos] + (self.mPlus*8)*(-e) + o[0][rpos:]
                cost = o[1]-e*8
                sg = o[2]-e*0
                options.append((move, cost, sg))
        else:
            options = self.l[f"[{sync}]_{phase}{lanedist}"]
        return options

    #[(letterstring, cost, sgliders, lane0)] to be shifted to p_lane latter
    def get_llpreoptions(self, p_laneMod2, lanedif, pphase, phase):
        #there is curreently at most one match, so we do not bother with multiplicity
        name = f"ll{p_laneMod2}_{lanedif}"
        if name in self.recipes:
            #simple match
            print (f"ll match {name}")
            recipe = self.recipes[name]
            info = recipe[1].split("l")
            if pphase!="b" and pphase!="eo"[int(info[1].split(",")[0])%2]:
                print (f"pphase wrong {pphase} {'eo'[int(info[1].split(',')[0])%2]}")
                return []
            if phase!="b" and phase!="eo"[int(info[2].split(",")[0])%2]:
                print (f"phase wrong {phase} {'eo'[int(info[2].split(',')[0])%2]}")
                return []
            return [(self.name2l[name],recipe[2]+120*recipe[3],recipe[3],int(info[1].split(",")[1]))]
        name = f"ll{p_laneMod2}" #there is only one such recipe, otherwise we should make changes there
        if name in self.recipes:
            print (f"ll match {name}")
            recipe = self.recipes[name]
            info = recipe[1].split("l")
            if pphase!="b" and pphase!="eo"[int(info[1].split(",")[0])%2]:
                print (f"pphase wrong {pphase} {'eo'[int(info[1].split(',')[0])%2]}")
                return []
            baselanedif = int(info[1].split(",")[2]) # more general alternative would to have baselanedif in _o,_e parts
            if lanedif<baselanedif:
                print (f"lanedif too small")
                return []
            name2 = f"ll{p_laneMod2}_{'eo'[lanedif%2]}"
            recipe2 = self.recipes[name2]
            info2 = recipe2[1].split("l")
            if phase!="b" and phase!="eo"[int(info2[1].split(",")[0])%2]:
                print (f"phase wrong {phase} {'eo'[int(info2[1].split(',')[0])%2]}")
                return []
            print (f"lanedif {lanedif} baselanedif {baselanedif} dif//2 {(lanedif-baselanedif)//2}")
            minfo = self.get_move(0,8*((lanedif-baselanedif)//2)) #positive moves do not depend on sync (the sync is 0)
            return [(self.name2l[name]+minfo[0]+self.name2l[name2],
                recipe[2]+120*recipe[3]+minfo[1]+recipe2[2]+120*recipe2[3],
                recipe[3]+minfo[2]+recipe2[3],
                int(info[1].split(",")[1]))]
        return []

    #[(letterstring, cost, sgliders)]
    def get_lloption(self, sync, lane0evendist, llpreoption):
        print (f"get_lloption({sync},{lane0evendist},({self.pack_letters(llpreoption[0])},{llpreoption[1]},{llpreoption[2]},{llpreoption[3]}))")
        os = int(self.recipes[self.l2name[llpreoption[0][0]]][0][1])
        shift = lane0evendist - llpreoption[3]
        minfo = self.get_move(sync,os-sync+4*shift)
        return (minfo[0]+llpreoption[0],minfo[1]+llpreoption[1],minfo[2]+llpreoption[2])

    def pack_loptions(self,loptions):
        res=" "
        for loption in loptions:
            res+=f"({self.pack_letters(loption[0])},{loption[1]},{loption[2]}),"
        return res[:-1]

    def letters2names(self, letter_string):
        names = ""
        for l in letter_string:
            names += self.l2name[l]+" "
        return names[:-1]

    def names2exttimedeltas(self, names_string):
        names = names_string.split(" ")
        recipe = []
        for name in names:
            recipe.append(self.recipes[name][0])
        return " ".join(recipe)

    def jointimedeltas(self, ext_td):
        etds = ext_td.split(" ")
        current_parenthesis = 0
        current_plus = 0
        synced = False
        started = False
        current_reminder = 0
        tds = []
        for etd in etds:
            if etd[0]=="(":
                if not synced:
                    print("consecutive parenthesis!")
                else:
                    current_parenthesis = int(etd[1:-1])
                    synced = False
            elif etd[0]=="[":
                if synced:
                    print("consecutive square brackets!")
                if not started:
                    if current_parenthesis>0:
                        tds.append(f"({current_parenthesis + current_plus})")
                    elif current_plus>0:
                        tds.append(f"+{current_plus}")
                    tds.append(etd)
                    started = True
                else:
                    td = current_parenthesis + current_plus
                    rem = (int(etd[1:-1]) - td - current_reminder) % 8
                    tds.append(f"{td+rem}")
                current_reminder = int(etd[1:-1])
                current_parenthesis = 0
                current_plus = 0
                synced = True
            elif etd[0]=="+":
                if synced:
                    print("+ at synced state!")
                current_plus += int(etd[1:])
            else:
                if not synced:
                    print("exact delay when not synced!")
                delay = int(etd)
                tds.append(etd)
                current_reminder += delay
        if current_parenthesis > 0:
            if current_parenthesis>0:
                tds.append(f"({current_parenthesis + current_plus})")
        return " ".join(tds)

    def pack_delayed1(self, delayed):
        res=""
        for key,value in delayed.items():
            res += f" {key}:({self.pack_letters(value[0])},{value[1]})"
        return res

    def process_goptions(self,goptions):

        self.delayed={}
        def updateIfBetter(key, move, cost):
            #print(f"uib {key},{self.pack_letters(move)},{cost}")
            if (not key in self.delayed):
                self.delayed[key] = (move, cost)
                return True
            if self.delayed[key][1] > cost:
                self.delayed[key] = (move, cost)
                return True
            else:
                return False
        print(f"process_options {goptions} len(delayed2) {len(self.delayed2)} len(self.delayed1) {len(self.delayed1)}")
        print (f"delayed 2{self.pack_delayed1(self.delayed2)}")
        print (f"delayed 1{self.pack_delayed1(self.delayed1)}")
        for pgoption in self.prev_goptions:
            if len(pgoption):
                pphase, p_lane = pgoption[0], int(pgoption[1:])
                for goption in goptions:
                    if len(goption):
                        phase, lane = goption[0], int(goption[1:])
                        lanedif = lane-p_lane
                        llpreoptions = self.get_llpreoptions(p_lane%2,lanedif,pphase,phase)
                        print (f"llpreoptions: {llpreoptions}")
                        for llpreoption in llpreoptions:
                            print(f"trying ({self.pack_letters(llpreoption[0])},{llpreoption[1]},{llpreoption[2]},{llpreoption[3]})")
                            for key, value in self.delayed2.items():
                                lloption = self.get_lloption(key%8,p_lane-2*(key//8),llpreoption)
                                ncost = value[1] + lloption[1]
                                ncur = key + lloption[1] - 120*lloption[2]
                                nmove = (key, 2, lloption[0]) # real update would be during step forward
                                updateIfBetter(ncur, nmove, ncost)

        # we plan to use delayed2 in near future using ll emissions as well
        # after procossing possible double emissions
        self.prev_goptions = goptions
        if not self.delayed1:
            self.delayed1[self.cur]=("", 0) # we are not considering total cost ... we are restarting the computation
        for goption in goptions:
            if len(goption):
                phase, lane = goption[0], int(goption[1:])
                for key, value in self.delayed1.items():
                    loptions = self.get_loptions(key%8, phase, lane-2*(key//8))
                    print(f"loptions [{key%8}]_{phase}{lane-2*(key//8)}: {self.pack_loptions(loptions)}")
                    for loption in loptions:
                        ncost = value[1] + loption[1]
                        ncur = key + loption[1] - 120*loption[2]
                        nmove = (key, 1, loption[0]) # real update would be during step forward
                        updateIfBetter(ncur, nmove, ncost)

    #extends the options DAG and if it is "tally" it outputs already known
    def preprocess_glider(self, glider):
        goptions = glider.split("|")
        self.process_goptions(goptions)
        if len(self.delayed)==1 and len(self.delayed1)==1:
            #we probably can flush known "history"
            for key, value in self.delayed.items():
                if value[0][1] == 1: #mark of normal emission
                     self.cur = value[0][0]
                     self.output += self.delayed1[value[0][0]][0]
                     self.delayed[key] = (value[0], value[1]-self.delayed1[value[0][0]][1])
                     self.delayed1[value[0][0]]=("",0)
        for key, value in self.delayed.items(): #let us include the history (if not cut)
            if value[0][1] == 1:
                self.delayed[key]=(self.delayed1[value[0][0]][0]+value[0][2], value[1])
            else:
                print (f"self_delayed update2 (({value[0][0]},{value[0][1]},{self.pack_letters(value[0][2])}),{value[1]}) {self.pack_delayed1(self.delayed2)}")
                self.delayed[key]=(self.delayed2[value[0][0]][0]+value[0][2], value[1])
        self.delayed2,self.delayed1 = self.delayed1,self.delayed
        #self.delayed2 = dict.copy(self.delayed1)
        #self.delayed1 = dict.copy(self.delayed)

    #selects the emission with minimal cost, not considering the final .cur
    def flush(self):
        bestkey = min(self.delayed1, key=lambda x:self.delayed1[x][1])
        self.cur = bestkey
        self.output += self.delayed1[bestkey][0]
        self.delayed2,self.delayed1={},{}
        return

    def compile(self, gliders):

        self.cur = 0
        self.output=""
        self.prev_goptions = []
        for x in gliders.split():
            self.preprocess_glider(x)
        self.flush()
        print (self.pack_letters(self.output))
        names = self.letters2names(self.output)
        print (names)
        exttd = self.names2exttimedeltas(names)
        print (exttd)
        td = self.jointimedeltas(exttd)
        print (td)
        return td
with

Code: Select all

from SimkinECCA import *

simkinecca = SimkinECCAp2compiler()
with open('salvos\lanephase\crab90full.txt') as f:
    td = simkinecca.compile(f.read().strip())
print (f"{td}")
and the data file:

Code: Select all

--[phase%8] exact delay (minimal delay of followup) -- simkin gliders, direction, (simkin) delay, lane (relative to std collision) --name
+1       -- 0  -- p
[0] (90) -- 1  -- m0
[2] (90) -- 2  -- m2
[4] (90) -- 1  -- m4

[3] 96 143 130 (90)   -- 4l352,-16 -- l00a
[3] 196 128 (90)      -- 4l238,-10 -- l00b
[3] 185 129 (90)      -- 4l246,-6  -- l00c
[1] 92 134 (90)       -- 3l275,-12 -- l01a
[1] 100 137 115 (105) -- 4l442,-7  -- l10a
[5] 144 132 107 (90)  -- 4l384,3   -- l10b
[7] 162 110 195 (90)  -- 4l340,27  -- l10c
[3] 96 92 147 (90)    -- 4l337,-15 -- l11a
[1] 92 163 (150)      -- 4l273,-5  -- l11b
[5] 138 125 (90)      -- 3l151,-1  -- l11c

[1] 96 224 96 (150)   -- 6l227,-6  l587,-16 -- ll0_-10
[3] 196 136 211 (190) -- 7l238,-10 l586,-17 -- ll0_-7
[1] 96 240 96 (150)   -- 6l227,-6  l587,-12 -- ll0_-6
[3] 196 147 147 (171) -- 7l238,-10 l651,-8  -- ll0_2
[3] 196 152 108 (90)  -- 5l238,-10 l455,-3  -- ll0_7
[3] 196 146 130 (178) -- 6l238,-10 l452,3   -- ll0_13
[3] 196 171 212 (90)  -- 6l238,-10 l480,7   -- ll0_17
[3] 165 101 103 (526) -- 8l323,-16 l506,12  -- ll0_28
[5] 138 119 163 (336) -- 7l151,-1  l455,-10 -- ll1_-9
[5] 138 (121)         -- 3l151,-1,-2 l      -- ll1
[0] 221 (90)          -- 2l476,-2  l        -- ll1_o
[0] 219 (90)          -- 2l478,-3  l        -- ll1_e
russellsprouts
Posts: 50
Joined: January 28th, 2026, 10:04 am

Re: 0E0P constructions

Post by russellsprouts »

Hippo.69 wrote: May 17th, 2026, 7:10 pm Seems I have almost finished the simkin ecca compiler (works for one direction so far).
Here is first use case:
I just pushed a compiler with similar agnosticization to the repo -- https://github.com/RussellSprouts/short ... 20_fast.py. It doesn't have the double glider recipes, though, so yours is much more efficient.

I tested on the crabstretcher seed minus the trigger glider, since my agnosticization code breaks if the result pattern isn't stable.

The closest match to the pattern you calculated is:

Code: Select all

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction SW --optimize population --color 0 --parity 1
...
gliders = 953
duration = 135240
Your result was ~840 gliders!

And here are the rest of the possibilities:

Code: Select all

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction SW --optimize population --color 0 --parity 0
...
gliders = 960
duration = 136939
...

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction NE --optimize population --color 0 --parity 0
...
gliders = 839
duration = 135423
...

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction NE --optimize population --color 0 --parity 1
...
gliders = 861
duration = 135913
...
For now we've been using the NE direction since it has the only two glider recipe: 3, 201, (167). But with your double glider usage, it looks like the SW direction is competitive. SW has better double glider recipes, but it would be interesting to see if NE+double gliders could be even more efficient.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

russellsprouts wrote: May 17th, 2026, 9:55 pm I tested on the crabstretcher seed minus the trigger glider, since my agnosticization code breaks if the result pattern isn't stable.
See the first pattern ... I am using "crabcatcher" to make the pattern "stable" ...

Edit: there is much better crabstretcher catcher:

Code: Select all

x = 3122, y = 3188, rule = B3/S23
6b2o$6b2o3$7b2o$7b2o5$8b2o$8b2o4b2o$14b2o21$2o$2o$6b3o$6bo$7bo8$18b3o$
18bo$19bo6$21b3o$21bo$22bo4$29b3o$29bo$30bo12$57b3o$57bo$58bo9$61bo$
60b2o$60bobo9$59b3o$59bo$60bo19$86bo$85b2o$85bobo25$101b3o$101bo$102bo
8$115b3o$115bo$116bo10$125b3o$125bo$126bo12$136b3o$136bo$137bo30$142b
3o$142bo$143bo10$152b3o$152bo$153bo7b3o$161bo$162bo10$172b3o$172bo$
173bo20$197b3o$197bo$198bo43$262b3o$262bo$263bo$253b3o$253bo$254bo$
278b3o$278bo$279bo17$294b3o$294bo$295bo10$305b3o$305bo$306bo15$336bo$
335b2o$324bo10bobo$323b2o$323bobo8$344bo$343b2o$343bobo9$339b3o$339bo$
340bo15$355bo$354b2o$354bobo3$357b3o$357bo$358bo13b3o$372bo$373bo$361b
o$360b2o$360bobo10$364b3o$364bo$365bo8$365b3o$365bo$366bo4$382b3o$382b
o$383bo16$398b3o$398bo$399bo2$402b3o$402bo$403bo10$413b3o$413bo$414bo
16$446b3o$446bo$436b3o8bo$436bo$437bo5$446bo$445b2o$445bobo13$459b3o$
459bo$460bo7$459b3o$459bo$460bo20$471b3o$471bo$472bo$479bo$478b2o6b3o$
478bobo5bo$487bo$493bo$492b2o$492bobo10$508bo$507b2o$507bobo15$528b3o$
528bo$520b3o6bo$520bo$521bo13$540bo$539b2o$539bobo2$552bo$551b2o$551bo
bo15$559b3o$559bo$560bo11$586bo$585b2o$585bobo2$574bo$573b2o$573bobo
12$591bo$590b2o$590bobo8bo$600b2o$600bobo11$604b3o$604bo$605bo6$612b3o
$601bo10bo$600b2o11bo$600bobo16$601b3o$601bo$602bo3$606b3o$606bo$607bo
2$620b3o$620bo$621bo6$621b3o$621bo$622bo2$633b3o$633bo$634bo5$620bo$
619b2o$619bobo14bo$635b2o$635bobo34$663bo$662b2o$662bobo9$678b3o$678bo
$679bo14$685b3o6b3o4b3o$685bo8bo6bo$686bo8bo6bo10$717b3o$717bo$718bo3$
705bo$704b2o$704bobo5$724bo$723b2o$723bobo12$735bo$734b2o$734bobo14$
742bo$741b2o$741bobo3$767b3o$745bo21bo$744b2o22bo$744bobo13$773bo$772b
2o$772bobo16$786bo$785b2o$785bobo5bo$792b2o$792bobo2$807bo$806b2o$806b
obo2$794bo$793b2o$793bobo13bo$808b2o$808bobo5$810b3o$810bo$811bo6$825b
3o$825bo$826bo2$832b3o$832bo$833bo4$832b3o$832bo$833bo12$846b3o$846bo$
847bo14$872b3o$872bo$873bo12$893bo$892b2o$885bo6bobo$884b2o$884bobo25$
913b3o$913bo$914bo2$923b3o$923bo$924bo12$920bo$919b2o$919bobo10$931bo$
930b2o$930bobo8$929b3o$929bo$930bo6$945b3o$945bo$946bo5b3o$952bo6bo$
953bo4b2o$958bobo5$961b3o$961bo34b3o$962bo14b3o16bo$977bo19bo$978bo4$
980b3o$980bo31b3o$981bo30bo$1013bo8$1010b3o$1010bo$1011bo2$1021b3o$
1021bo$1022bo6b3o$1029bo$1030bo4$1031b3o$1031bo$1032bo4$1035b3o$1035bo
$1036bo5$1044bo$1043b2o$1043bobo10$1070b3o$1070bo$1071bo5$1056b3o$
1056bo$1057bo4$1089bo$1088b2o$1088bobo8$1088bo$1087b2o$1087bobo6$1089b
o$1088b2o$1088bobo12$1098bo5bo$1097b2o4b2o$1097bobo3bobo2$1112bo$1111b
2o$1111bobo5$1123b3o$1123bo$1124bo10$1136b3o$1136bo$1137bo25$1153bo$
1152b2o$1152bobo6$1153bo$1152b2o$1152bobo10$1165bo$1164b2o$1164bobo16$
1191bo$1190b2o$1190bobo3$1201b3o$1201bo$1202bo4$1204b3o$1204bo$1205bo
12$1215b3o$1215bo$1216bo2$1224b3o$1224bo$1225bo5$1228bo$1227b2o$1227bo
bo3$1231b3o$1231bo$1232bo11$1255bo$1254b2o$1254bobo$1244b3o$1244bo$
1245bo13$1258bo$1257b2o$1257bobo50$1277b3o$1277bo$1278bo8$1291b3o$
1291bo$1292bo11$1304bo$1303b2o$1295bo7bobo$1294b2o$1294bobo34$1352bo$
1351b2o$1351bobo3$1356b3o$1356bo$1357bo41$1388bo$1387b2o$1387bobo5$
1389b3o$1389bo$1390bo8$1395b3o$1395bo$1396bo27$1415b3o$1415bo$1416bo
48$1441b3o$1441bo$1442bo2$1447b3o$1447bo$1448bo4$1457b3o$1457bo$1458bo
2$1463b3o$1463bo$1464bo6$1463bo$1462b2o$1462bobo17$1475b3o$1475bo$
1476bo2$1479b3o$1479bo$1480bo15$1515bo$1514b2o$1514bobo50$1572b3o$
1572bo$1573bo12$1583b3o$1583bo$1584bo6$1591b3o$1591bo$1592bo4$1599b3o$
1599bo$1600bo20$1626b3o$1626bo7bo$1627bo5b2o$1633bobo4$1644bo$1643b2o$
1643bobo7$1641b3o$1641bo$1642bo5$1674b3o$1674bo$1675bo3$1679bo$1661b3o
14b2o$1661bo16bobo$1662bo7$1691bo$1690b2o$1690bobo6$1694bo$1693b2o$
1693bobo3$1711b3o$1711bo$1712bo2$1698b3o$1698bo$1699bo3$1725bo$1708b3o
13b2o$1708bo15bobo$1709bo3$1729b3o$1729bo$1730bo12$1740b3o$1740bo$
1741bo6$1748b3o$1748bo10bo$1749bo8b2o$1758bobo4$1764bo$1763b2o$1763bob
o7$1764b3o$1764bo$1765bo4$1770b3o4b3o$1770bo6bo$1771bo6bo6$1811b3o$
1811bo$1791b3o18bo$1791bo$1792bo5b3o$1798bo$1799bo6$1824b3o$1824bo$
1825bo25$1841bo$1840b2o$1840bobo3$1855b3o$1855bo$1856bo4$1857b3o$1857b
o$1858bo$1872b3o$1872bo$1873bo$1859b3o$1859bo$1860bo5$1886b3o$1886bo$
1887bo7$1899bo$1898b2o$1898bobo6$1900bo$1899b2o$1899bobo19$1907b3o13b
3o$1907bo15bo$1908bo15bo4$1909b3o$1909bo$1910bo15$1938bo$1937b2o$1937b
obo9$1950b3o$1950bo$1951bo4$1956b3o$1956bo$1957bo8$1969b3o$1969bo$
1970bo6$1977b3o$1977bo$1978bo8$1995b3o$1995bo$1976b3o17bo$1976bo$1977b
o3$1998bo$1976b3o18b2o$1976bo20bobo$1977bo18$2010b3o$2010bo$2002b3o6bo
$2002bo$2003bo9$2029bo$2028b2o$2028bobo10$2025bo$2024b2o$2024bobo9$
2028b3o$2028bo$2029bo4$2047b3o$2047bo$2048bo$2035bo$2034b2o$2034bobo9$
2052b3o$2052bo$2053bo2$2072b3o$2064bo7bo$2063b2o8bo$2063bobo$2076b3o$
2076bo$2077bo6$2091b3o$2091bo$2092bo8$2089b3o$2089bo$2090bo3$2101bo5bo
$2100b2o4b2o$2100bobo3bobo2$2114bo$2113b2o$2113bobo35$2085b3o$2085bo$
2086bo32$2109b3o$2109bo$2110bo16$2130b3o$2130bo$2131bo4$2142b3o$2142bo
$2143bo8$2143b3o$2143bo$2144bo8$2157b3o$2157bo$2158bo10$2169b3o$2169bo
$2170bo$2175bo$2174b2o$2174bobo12$2179bo13b3o$2178b2o13bo$2178bobo13bo
12$2203b3o$2203bo$2204bo11$2214bo$2213b2o$2213bobo21$2236b3o$2236bo$
2237bo7$2235bo$2234b2o$2234bobo2$2243bo$2242b2o$2242bobo5$2244b3o$
2244bo$2245bo11$2255b3o$2255bo$2256bo12$2290b3o$2274bo15bo$2273b2o7b3o
6bo$2273bobo6bo$2283bo30$2314b3o$2314bo$2315bo9$2339bo$2338b2o$2338bob
o5$2339b3o$2339bo$2340bo8$2337b3o$2337bo8bo$2338bo6b2o$2345bobo22$
2374bo$2367b3o3b2o$2367bo5bobo$2368bo9$2372bo$2371b2o$2371bobo15$2398b
3o$2398bo$2399bo4$2398b3o$2398bo$2399bo10$2419b3o$2419bo$2420bo$2424bo
$2406b3o14b2o$2406bo16bobo$2407bo10$2421b3o$2421bo12bo$2422bo10b2o$
2433bobo3$2437b3o$2437bo$2438bo19$2423b3o$2423bo$2424bo8$2423b3o$2423b
o$2424bo16$2428b3o$2428bo$2429bo5$2435b3o$2435bo$2436bo12$2446b3o$
2446bo$2447bo$2467bo$2466b2o$2466bobo8$2466bo$2465b2o$2465bobo4$2466bo
$2465b2o$2465bobo6bo$2473b2o$2473bobo13$2473b3o$2473bo$2474bo39$2500bo
$2499b2o$2499bobo10$2523b3o$2523bo$2524bo14$2531b3o$2531bo$2532bo4$
2537b3o7b3o$2537bo9bo$2538bo9bo12$2562b3o$2562bo$2563bo10$2557b3o$
2557bo$2558bo4$2560b3o$2560bo$2561bo10$2570b3o$2570bo$2571bo2$2579b3o$
2579bo$2580bo53b3o4b3o$2634bo6bo$2635bo6bo3$2583bo$2582b2o$2582bobo3$
2654b3o$2586bo67bo$2585b2o68bo$2585bobo3bo$2590b2o$2590bobo$2609b3o$
2609bo$2610bo59b3o$2670bo$2671bo3$2675bo$2674b2o$2674bobo6$2674bo$
2673b2o$2673bobo7$2676b3o$2676bo$2677bo4$2691b3o$2691bo$2692bo5$2705bo
$2704b2o5b3o$2704bobo4bo$2712bo10$2723b3o$2723bo$2724bo20$2744b3o3b3o$
2744bo5bo$2745bo5bo7$2759bo$2758b2o$2758bobo17$2772b3o$2772bo$2773bo
15$2791b3o$2791bo$2792bo8$2803b3o$2803bo$2804bo4$2828bo$2820bo6b2o$
2819b2o6bobo$2819bobo5$2829b3o$2829bo$2830bo5$2831bo$2830b2o$2830bobo
8$2844bo$2843b2o$2843bobo2$2848bo$2847b2o$2847bobo78$2923bo$2922b2o$
2922bobo9$2918b3o$2918bo$2919bo10$2914bo$2913b2o$2913bobo3$2922bo$
2921b2o$2921bobo112$3101b3o$3101bo$3102bo12$3115b3o$3115bo$3116bo9$
3119b3o$3119bo$3120bo!
russellsprouts wrote: May 17th, 2026, 9:55 pm The closest match to the pattern you calculated is:

Code: Select all

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction SW --optimize population --color 0 --parity 1
...
gliders = 953
duration = 135240
Your result was ~840 gliders!

And here are the rest of the possibilities:

Code: Select all

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction SW --optimize population --color 0 --parity 0
...
gliders = 960
duration = 136939
...
I am optimizing the "duration". And I should check the other phase option...

I am thinking about use for p1 patterns having '%' in agnosticised recipe signaling subpattern is p1 so you can switch phases.
We probably could add '!' to say the phases should be exactly as in recipe. Then for building p2 pattern we could start with '%' and the last p1 subresult should be marked with '!' to have the final result in sync.

We could calculate sections interrupted by '%','!' independently, chosing the better matching phase.
If simkin build is part of the recipe, we could interpret '%', '!' the same way, and chose the simkin phase compatible to the optimal choice of '!' portion.

... so self.phaseSwitch should be introduced and goptions translated according to its state.

Edit: ! Would not be required, much better way is to compute both phasestarts simultaneously and interpret % as opportunity to phaseswitch = merging subresults of both phasestarts together … now when releasing definite subresults, I cannot reset the cost… as it is just “semidefinite” … at the end I could output both versions and their costs … they would have almost same, but equivalent portions till the last %.
russellsprouts wrote: May 17th, 2026, 9:55 pm

Code: Select all

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction NE --optimize population --color 0 --parity 0
...
gliders = 839
duration = 135423
...

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction NE --optimize population --color 0 --parity 1
...
gliders = 861
duration = 135913
...
For now we've been using the NE direction since it has the only two glider recipe: 3, 201, (167). But with your double glider usage, it looks like the SW direction is competitive. SW has better double glider recipes, but it would be interesting to see if NE+double gliders could be even more efficient.
Wow, I have not noticed the other direction is such efficient.
Let us see how much important 'XA*Y', 'XA*Z' are. The moves 'OPQRSTUVW' are used rarely compared to them.
(Frequencies in our example alphabetically ... 6;4;4;3;3;0;0;0;2;44;18;26 (44=18+26) so 20/44 ... I have checked there are oportunities for all letters to appear (some of them require good followup to be advantageous)
Hmm, the rest of frequency analysis is here: 319; 24;10;1; 1;3;21;67;17;13;0;0;9;40 ...
K having 0 is almost dominated by I, there are rare predecessor/followup oportunities to be better, L (another 0) is best for some predecessors more often. Surprisingly rather small amount of glider destroying moves ...)
(Let us hope the alphabet would be sufficient for the entire move repertoire :))

I have expected I would use emissions to both sides for building the directed portion of the metacell.
So I have to add 'R', 'L' switches to the recipe changing emission direction.
(Of course I should prepare all the 'r' stuff...)

It would be nice to have self.RLSwitch to allow flipped interpretation.
We should be carefull with 'R','L' switching ... we should have "compatible coordinate system" to produce the same result ... in both cases.
I am afraid compatible coordinate system does not exist and there should be shift WLOG applied to 'R' directed salvo depending on RLSwitch.

So when the simkin build is part of the recipe we should as well decide it's side orientation. ... So computing recipes for both sides and choosing ...

I am currently not planning to optimize LR synchronization. It definitely adds another level to the compiler complexity (from almost linear to exponential levels ... unless just a good heuristic is used).

In this case of crabstretcher the starting target is actually debrie from the simkin gun build (changed cleanup ... I have probably put the block to wrong distance in the example, but it's repositioning is computed well), so flipping the simkin gun would actually mean changing the slow salvo...
Last edited by Hippo.69 on May 23rd, 2026, 2:42 am, edited 2 times in total.
russellsprouts
Posts: 50
Joined: January 28th, 2026, 10:04 am

Re: 0E0P constructions

Post by russellsprouts »

Hippo.69 wrote: May 18th, 2026, 3:03 am See the first pattern ... I am using "crabcatcher" to make the pattern "stable" ...
Ah that makes sense. That also wouldn't work for me because I assume that the slow salvo pattern only has gliders and a block. That's any easy fix for me, though.
Hippo.69 wrote: May 18th, 2026, 3:03 am I am thinking about use for p1 patterns having '%' in agnosticised recipe signaling subpattern is p1 so you can switch phases.
We probably could add '!' to say the phases should be exactly as in recipe. Then for building p2 pattern we could start with '%' and the last p1 subresult should be marked with '!' to have the final result in sync.

We could calculate sections interrupted by '%','!' independently, chosing the better matching phase.
If simkin build is part of the recipe, we could interpret '%', '!' the same way, and chose the simkin phase compatible to the optimal choice of '!' portion.
I have something similar to that in my code, but it also allows non-interacting subregions to be rephased independently. (Currently buggy, so I have it disabled).

My code is inspired by the defragmentation logic in pslmake. For each slow glider, I look at the diff before and after, and track which cells it creates, removes, makes p2, makes no longer p2, or rephases p2. I also track a "flight path" of each cell that changes during the simulation.
  • If a glider deletes a cell, then it has a dependency on the glider that created that cell
  • If a glider makes a cell no longer periodic or rephases it, then it has a *periodic dependency* on the glider that made it periodic.
  • If a cell is periodic in the final pattern, the periodic dependency chain for that cell should be preserved.
  • Independent periodic dependency chains that are not reachable from the end can be rephased independently.
  • If a cell is live in the final pattern, then any glider with an overlapping flight path should come before that cell was created.
This is all a heuristic and doesn't capture some catalysis-like reactions, but it's a good starting point for exploring possibilities.
  • If a glider didn't affect any periodic cells, we can try both parities -- it's probably a `b` glider in your classification.
  • If a glider creates periodic cells but doesn't remove any, and is not part of a periodic dependency chain live in the final pattern, we can try rephasing it and all of its periodic dependencies together.
  • We can use the dependencies as a DAG and re-order the gliders. I think this would be especially useful with the double glider recipes -- the recipes require just the right combination of color/parity, so we could use them more often if we re-order the gliders.
Hippo.69 wrote: May 18th, 2026, 3:03 am In this case of crabstretcher the starting target is actually debrie from the simkin gun build (changed cleanup ... I have probably put the block to wrong distance in the example, but it's repositioning is computed well), so flipping the simkin gun would actually mean changing the slow salvo...
That's a great idea -- I assume like this?

Code: Select all

x = 1990, y = 1986, rule = LifeHistory
2A$2A2.3E6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D5.3D2.D6.
3D.3D5.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D2.D7.D2.D.D2.D6.3D.D.D6.D2.3D.
3D5.3D.3D6.D2.D.D.3D5.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.D.D.D.D
5.3D.3D6.D2.3D2.D7.D2.3D2.D7.D3.D2.3D6.D2.3D2.D7.D3.D2.D.D6.D3.D3.
D7.D3.D2.3D5.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D.3D6.D3.D2.D.D6.D2.3D.3D
6.D2.3D.3D5.3D.3D5.3D.3D5.3D.3D5.3D2.D6.3D2.D6.3D.D.D.3D6.D3.D2.3D
6.D2.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D2.D6.3D.3D5.3D.3D.3D6.
D2.D.D.D.D5.3D.D.D5.3D2.D2.3D6.D2.D.D.3D5.3D.3D.3D6.D3.D3.D7.D3.D
2.3D6.D2.3D.3D5.3D.3D5.3D2.D7.D2.3D.3D5.3D.3D.3D5.3D2.D2.3D$4.E.D
5.2D4.D.D7.2D2.D.D3.D5.2D2.D.D.D.D5.2D2.D.D.D7.D.D.D.D5.D.D.2D6.D.
D.D7.D.D.D.D5.2D2.D.D.D7.D.D.D.D5.2D2.D.D.2D6.2D2.D.D.2D6.D.D.D.D
5.2D2.D3.D.D5.D.D3.D5.2D2.D.D.D7.D.D.D.D5.D.D.D.D5.2D2.D5.D5.2D4.D
.D.D5.2D2.D.D.D.D5.D.D3.D5.2D2.D3.2D6.2D4.D.2D6.2D2.2D2.D7.2D2.D.D
.2D6.2D2.2D2.D.D5.2D2.2D2.2D6.2D2.2D4.D5.D.D3.D5.2D4.D3.D5.D.D.D.D
5.2D2.D.D3.D5.2D2.2D2.D.D5.2D2.D.D3.D5.2D2.D5.D5.D.D.D.D5.D.D.D.D
5.D.D.D.D5.D.D.2D6.D.D.2D8.D.D.D3.D5.2D2.2D4.D5.2D4.D.D.D5.2D2.D.D
.D.D5.D.D.D7.2D4.D3.D5.2D4.D.2D6.D.D.D.D7.D.D5.D5.2D2.D.D.D.D5.D.D
.D.D7.D.2D2.D.D5.2D2.D.D.D.D7.D3.D.D7.2D2.2D2.2D6.2D2.2D2.D.D5.2D
2.D.D.D.D5.D.D.D7.D.D.2D6.2D4.D.D.D7.D.D.D.D.D7.D.2D2.D.D$4.DAD6.D
2.3D.3D6.D2.D.D.3D6.D2.D.D.D.D6.D2.3D.3D5.3D.D.D5.3D2.D6.3D.3D5.3D
.3D6.D2.D.D.3D5.3D.D.D6.D2.D.D2.D7.D2.3D2.D6.3D.3D6.D2.3D.3D5.3D.
3D6.D2.3D.3D5.3D.3D5.3D.D.D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D6.
D2.3D2.D7.D2.3D2.D7.D3.D2.3D6.D2.D.D2.D7.D3.D2.3D6.D3.D3.D7.D3.D2.
3D5.3D.3D6.D2.3D3.D5.3D.3D6.D2.D.D.3D6.D3.D2.3D6.D2.D.D3.D6.D2.3D
3.D5.3D.D.D5.3D.D.D5.3D.D.D5.3D2.D6.3D2.D6.3D.3D.3D6.D3.D2.3D6.D2.
3D.3D6.D2.D.D.3D5.3D.3D6.D2.3D3.D6.D2.3D2.D6.3D.3D5.3D.3D3.D6.D2.
3D.3D5.3D.3D5.3D2.D2.3D6.D2.3D.3D5.3D.3D.3D6.D3.D3.D7.D3.D2.3D6.D
2.D.D.D.D5.3D.3D5.3D2.D7.D2.3D.3D5.3D.3D.3D5.3D2.D2.3D$4.D.D6.D2.D
3.D.D6.D2.D.D.D8.D2.D.D.D.D6.D4.D3.D7.D.D.D7.D2.D8.D3.D7.D.D.D6.D
2.D.D3.D7.D.D.D6.D2.D.D2.D7.D4.D2.D8.D3.D6.D4.D3.D7.D.D8.D4.D.D.D
7.D3.D7.D.D.D6.D4.D.D8.D4.D3.D6.D4.D3.D7.D.D8.D2.D.D2.D7.D4.D2.D7.
D3.D2.D.D6.D2.D.D2.D7.D3.D4.D6.D3.D3.D7.D3.D2.D9.D3.D6.D2.D4.D8.D.
D.D6.D2.D.D.D8.D3.D4.D6.D2.D.D2.D7.D4.D2.D8.D.D.D7.D.D.D7.D.D.D7.D
2.D8.D2.D6.D5.D3.D6.D3.D4.D6.D4.D3.D6.D2.D.D.D.D7.D3.D6.D2.D4.D7.D
2.D4.D8.D3.D5.D5.D2.D7.D4.D3.D7.D3.D5.D4.D2.D.D6.D4.D.D.D5.D3.D3.D
.D6.D3.D3.D7.D3.D4.D6.D2.D.D.D.D7.D3.D7.D2.D7.D4.D.D.D5.D3.D.D3.D
5.D4.D4.D$4.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.2D6.3D.3D5.3D.
3D5.3D.2D6.3D.3D5.3D.3D.2D6.3D.3D5.3D.3D.3D5.3D3.D.3D5.3D3.D5.3D.
2D2.3D5.3D.3D5.3D3.D.3D5.3D.3D5.3D.3D5.3D.2D2.3D5.3D.3D.3D5.3D3.D
3.D5.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D3.D5.3D.
3D.3D5.3D.3D.3D5.3D.3D5.3D.3D2.D6.3D.3D5.3D.3D.3D5.3D.3D3.D5.3D.3D
2.D6.3D.2D3.D6.3D.3D5.3D.3D5.3D.3D5.3D.3D5.3D.3D5.3D3.D.3D5.3D.3D.
3D5.3D.3D.3D5.3D.3D.3D5.3D.2D6.3D.3D2.D6.3D.3D.3D5.3D.3D5.3D.2D3.D
6.3D3.D3.D5.3D3.D5.3D.3D.3D5.3D3.D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.
3D5.3D.3D.3D5.3D.2D6.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D27$36.2A$
36.A.A$36.A24$61.3A$61.A$62.A23$86.3A$86.A$87.A46$136.A$135.2A$
135.A.A21$158.2A$157.2A$159.A21$180.3A$180.A$181.A21$205.A$204.2A$
204.A.A23$229.2A$228.2A$230.A24$255.2A$255.A.A$255.A21$277.3A$277.
A$278.A23$303.2A$302.2A$304.A33$338.2A$338.A.A$338.A22$361.3A$361.
A$362.A37$402.A$401.2A$401.A.A21$425.A$424.2A$424.A.A35$461.2A$
460.2A$462.A23$485.3A$485.A$486.A20$508.2A$508.A.A$508.A36$546.2A$
546.A.A$546.A33$581.2A$580.2A$582.A34$617.2A$616.2A$618.A21$640.2A
$639.2A$641.A38$680.2A$680.A.A$680.A31$713.2A$712.2A$714.A27$742.
2A$741.2A$743.A23$767.2A$767.A.A$767.A27$795.3A$795.A$796.A25$824.
A$823.2A$823.A.A26$852.A$851.2A$851.A.A22$874.3A$874.A$875.A29$
907.A$906.2A$906.A.A23$931.2A$930.2A$932.A23$957.A$956.2A$956.A.A
27$985.2A$984.2A$986.A25$1011.3A$1011.A$1012.A37$1051.2A$1050.2A$
1052.A20$1074.A$1073.2A$1073.A.A21$1096.2A$1095.2A$1097.A20$1119.A
$1118.2A$1118.A.A21$1141.2A$1141.A.A$1141.A21$1164.2A$1163.2A$
1165.A59$1224.3A$1224.A$1225.A26$1253.2A$1252.2A$1254.A33$1287.3A$
1287.A$1288.A25$1314.3A$1314.A$1315.A21$1339.A$1338.2A$1338.A.A30$
1370.2A$1370.A.A$1370.A28$1401.A$1400.2A$1400.A.A23$1425.2A$1425.A
.A$1425.A62$1490.A$1489.2A$1489.A.A34$1526.A$1525.2A$1525.A.A22$
1549.2A$1548.2A$1550.A52$1604.A$1603.2A$1603.A.A35$1641.A$1640.2A$
1640.A.A55$1697.2A$1696.2A$1698.A26$1724.3A$1724.A$1725.A27$1755.A
$1754.2A$1754.A.A23$1780.A$1779.2A$1779.A.A22$1803.2A$1803.A.A$
1803.A21$1826.2A$1825.2A$1827.A32$1861.A$1860.2A$1860.A.A71$1932.
3A$1932.A$1933.A52$1988.A$1987.2A$1987.A.A!
That's

Code: Select all

0, 126, 102, 100, 195, 90, 91, 95, 98, 105, 90, 101, 141, 94, 159, 92, 146, 99, 90, 152, 139, 144, 92, 161, 131, 116, 101, 114, 111, 112, 93, 127, 98, 102, 114, 107, 157, 90, 90, 90, 91, 91, 243, 113, 139, 108, 95, 127, 121, 99, 257, 144, 94, 218, 148, 226, 111, 119, 100, 95, 91, 138, 289, 219
Since that block would normally be cleaned up during the initial construction, we don't need to find a new cleanup recipe either, the existing one will just work. The last boat in the NE might also work on that side, since we can make it into a honeyfarm, and most slow salvos start by making a honeyfarm.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

russellsprouts wrote: May 18th, 2026, 8:16 am Ah that makes sense. That also wouldn't work for me because I assume that the slow salvo pattern only has gliders and a block. That's any easy fix for me, though.
I often build using pslmake, but sometimes I should destroy as well ... agnosticize is very efficient for destruction of small isolated clusters during the build ... for destructions the slow salvo generated is often "very slow" some glider starts chain reaction sending glider in opposite direction, so next glider should wait ...
russellsprouts wrote: May 18th, 2026, 8:16 am I have something similar to that in my code, but it also allows non-interacting subregions to be rephased independently. (Currently buggy, so I have it disabled).

My code is inspired by the defragmentation logic in pslmake. For each slow glider, I look at the diff before and after, and track which cells it creates, removes, makes p2, makes no longer p2, or rephases p2. I also track a "flight path" of each cell that changes during the simulation.
  • If a glider deletes a cell, then it has a dependency on the glider that created that cell
  • If a glider makes a cell no longer periodic or rephases it, then it has a *periodic dependency* on the glider that made it periodic.
  • If a cell is periodic in the final pattern, the periodic dependency chain for that cell should be preserved.
  • Independent periodic dependency chains that are not reachable from the end can be rephased independently.
  • If a cell is live in the final pattern, then any glider with an overlapping flight path should come before that cell was created.
This is all a heuristic and doesn't capture some catalysis-like reactions, but it's a good starting point for exploring possibilities.
  • If a glider didn't affect any periodic cells, we can try both parities -- it's probably a `b` glider in your classification.
  • If a glider creates periodic cells but doesn't remove any, and is not part of a periodic dependency chain live in the final pattern, we can try rephasing it and all of its periodic dependencies together.
  • We can use the dependencies as a DAG and re-order the gliders. I think this would be especially useful with the double glider recipes -- the recipes require just the right combination of color/parity, so we could use them more often if we re-order the gliders.
Yep (pslmake)defragment computes such graph (dependency, not periodicity detection) to discard nonperspective swap options, and then tries most perspective swaps "for each position". Each swap should be rechecked to see the interaction with construction temporary clusters ... and very often there are other problems detected, not covered by the static detection.

I am trying to create defrag output as general as possible, but safe. I consider the defrag to compute the glider order and it defines the stable/low periodic patterns of the slow salvo. Then I for each individual glider detect all posible phase-lanes of the glider which produce the same pattern.
bx is shortcut for ex|ox. It could happen the reaction is different and it could affect p2(non p1) regions.

It is almost impossible to track "independent" p2 regions. There are weird dependency options. The % option would not work for big patterns, but for demenoid like ships/propagators ... the pattern is typically rather small and often p1 ... so it could help.
russellsprouts wrote: May 18th, 2026, 8:16 am That's a great idea -- I assume like this?

Code: Select all

x = 1990, y = 1986, rule = LifeHistory
2A$2A2.3E6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D5.3D2.D6.
3D.3D5.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D2.D7.D2.D.D2.D6.3D.D.D6.D2.3D.
3D5.3D.3D6.D2.D.D.3D5.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.D.D.D.D
5.3D.3D6.D2.3D2.D7.D2.3D2.D7.D3.D2.3D6.D2.3D2.D7.D3.D2.D.D6.D3.D3.
D7.D3.D2.3D5.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D.3D6.D3.D2.D.D6.D2.3D.3D
6.D2.3D.3D5.3D.3D5.3D.3D5.3D.3D5.3D2.D6.3D2.D6.3D.D.D.3D6.D3.D2.3D
6.D2.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D2.D6.3D.3D5.3D.3D.3D6.
D2.D.D.D.D5.3D.D.D5.3D2.D2.3D6.D2.D.D.3D5.3D.3D.3D6.D3.D3.D7.D3.D
2.3D6.D2.3D.3D5.3D.3D5.3D2.D7.D2.3D.3D5.3D.3D.3D5.3D2.D2.3D$4.E.D
5.2D4.D.D7.2D2.D.D3.D5.2D2.D.D.D.D5.2D2.D.D.D7.D.D.D.D5.D.D.2D6.D.
D.D7.D.D.D.D5.2D2.D.D.D7.D.D.D.D5.2D2.D.D.2D6.2D2.D.D.2D6.D.D.D.D
5.2D2.D3.D.D5.D.D3.D5.2D2.D.D.D7.D.D.D.D5.D.D.D.D5.2D2.D5.D5.2D4.D
.D.D5.2D2.D.D.D.D5.D.D3.D5.2D2.D3.2D6.2D4.D.2D6.2D2.2D2.D7.2D2.D.D
.2D6.2D2.2D2.D.D5.2D2.2D2.2D6.2D2.2D4.D5.D.D3.D5.2D4.D3.D5.D.D.D.D
5.2D2.D.D3.D5.2D2.2D2.D.D5.2D2.D.D3.D5.2D2.D5.D5.D.D.D.D5.D.D.D.D
5.D.D.D.D5.D.D.2D6.D.D.2D8.D.D.D3.D5.2D2.2D4.D5.2D4.D.D.D5.2D2.D.D
.D.D5.D.D.D7.2D4.D3.D5.2D4.D.2D6.D.D.D.D7.D.D5.D5.2D2.D.D.D.D5.D.D
.D.D7.D.2D2.D.D5.2D2.D.D.D.D7.D3.D.D7.2D2.2D2.2D6.2D2.2D2.D.D5.2D
2.D.D.D.D5.D.D.D7.D.D.2D6.2D4.D.D.D7.D.D.D.D.D7.D.2D2.D.D$4.DAD6.D
2.3D.3D6.D2.D.D.3D6.D2.D.D.D.D6.D2.3D.3D5.3D.D.D5.3D2.D6.3D.3D5.3D
.3D6.D2.D.D.3D5.3D.D.D6.D2.D.D2.D7.D2.3D2.D6.3D.3D6.D2.3D.3D5.3D.
3D6.D2.3D.3D5.3D.3D5.3D.D.D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D6.
D2.3D2.D7.D2.3D2.D7.D3.D2.3D6.D2.D.D2.D7.D3.D2.3D6.D3.D3.D7.D3.D2.
3D5.3D.3D6.D2.3D3.D5.3D.3D6.D2.D.D.3D6.D3.D2.3D6.D2.D.D3.D6.D2.3D
3.D5.3D.D.D5.3D.D.D5.3D.D.D5.3D2.D6.3D2.D6.3D.3D.3D6.D3.D2.3D6.D2.
3D.3D6.D2.D.D.3D5.3D.3D6.D2.3D3.D6.D2.3D2.D6.3D.3D5.3D.3D3.D6.D2.
3D.3D5.3D.3D5.3D2.D2.3D6.D2.3D.3D5.3D.3D.3D6.D3.D3.D7.D3.D2.3D6.D
2.D.D.D.D5.3D.3D5.3D2.D7.D2.3D.3D5.3D.3D.3D5.3D2.D2.3D$4.D.D6.D2.D
3.D.D6.D2.D.D.D8.D2.D.D.D.D6.D4.D3.D7.D.D.D7.D2.D8.D3.D7.D.D.D6.D
2.D.D3.D7.D.D.D6.D2.D.D2.D7.D4.D2.D8.D3.D6.D4.D3.D7.D.D8.D4.D.D.D
7.D3.D7.D.D.D6.D4.D.D8.D4.D3.D6.D4.D3.D7.D.D8.D2.D.D2.D7.D4.D2.D7.
D3.D2.D.D6.D2.D.D2.D7.D3.D4.D6.D3.D3.D7.D3.D2.D9.D3.D6.D2.D4.D8.D.
D.D6.D2.D.D.D8.D3.D4.D6.D2.D.D2.D7.D4.D2.D8.D.D.D7.D.D.D7.D.D.D7.D
2.D8.D2.D6.D5.D3.D6.D3.D4.D6.D4.D3.D6.D2.D.D.D.D7.D3.D6.D2.D4.D7.D
2.D4.D8.D3.D5.D5.D2.D7.D4.D3.D7.D3.D5.D4.D2.D.D6.D4.D.D.D5.D3.D3.D
.D6.D3.D3.D7.D3.D4.D6.D2.D.D.D.D7.D3.D7.D2.D7.D4.D.D.D5.D3.D.D3.D
5.D4.D4.D$4.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.2D6.3D.3D5.3D.
3D5.3D.2D6.3D.3D5.3D.3D.2D6.3D.3D5.3D.3D.3D5.3D3.D.3D5.3D3.D5.3D.
2D2.3D5.3D.3D5.3D3.D.3D5.3D.3D5.3D.3D5.3D.2D2.3D5.3D.3D.3D5.3D3.D
3.D5.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D3.D5.3D.
3D.3D5.3D.3D.3D5.3D.3D5.3D.3D2.D6.3D.3D5.3D.3D.3D5.3D.3D3.D5.3D.3D
2.D6.3D.2D3.D6.3D.3D5.3D.3D5.3D.3D5.3D.3D5.3D.3D5.3D3.D.3D5.3D.3D.
3D5.3D.3D.3D5.3D.3D.3D5.3D.2D6.3D.3D2.D6.3D.3D.3D5.3D.3D5.3D.2D3.D
6.3D3.D3.D5.3D3.D5.3D.3D.3D5.3D3.D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.
3D5.3D.3D.3D5.3D.2D6.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D27$36.2A$
36.A.A$36.A24$61.3A$61.A$62.A23$86.3A$86.A$87.A46$136.A$135.2A$
135.A.A21$158.2A$157.2A$159.A21$180.3A$180.A$181.A21$205.A$204.2A$
204.A.A23$229.2A$228.2A$230.A24$255.2A$255.A.A$255.A21$277.3A$277.
A$278.A23$303.2A$302.2A$304.A33$338.2A$338.A.A$338.A22$361.3A$361.
A$362.A37$402.A$401.2A$401.A.A21$425.A$424.2A$424.A.A35$461.2A$
460.2A$462.A23$485.3A$485.A$486.A20$508.2A$508.A.A$508.A36$546.2A$
546.A.A$546.A33$581.2A$580.2A$582.A34$617.2A$616.2A$618.A21$640.2A
$639.2A$641.A38$680.2A$680.A.A$680.A31$713.2A$712.2A$714.A27$742.
2A$741.2A$743.A23$767.2A$767.A.A$767.A27$795.3A$795.A$796.A25$824.
A$823.2A$823.A.A26$852.A$851.2A$851.A.A22$874.3A$874.A$875.A29$
907.A$906.2A$906.A.A23$931.2A$930.2A$932.A23$957.A$956.2A$956.A.A
27$985.2A$984.2A$986.A25$1011.3A$1011.A$1012.A37$1051.2A$1050.2A$
1052.A20$1074.A$1073.2A$1073.A.A21$1096.2A$1095.2A$1097.A20$1119.A
$1118.2A$1118.A.A21$1141.2A$1141.A.A$1141.A21$1164.2A$1163.2A$
1165.A59$1224.3A$1224.A$1225.A26$1253.2A$1252.2A$1254.A33$1287.3A$
1287.A$1288.A25$1314.3A$1314.A$1315.A21$1339.A$1338.2A$1338.A.A30$
1370.2A$1370.A.A$1370.A28$1401.A$1400.2A$1400.A.A23$1425.2A$1425.A
.A$1425.A62$1490.A$1489.2A$1489.A.A34$1526.A$1525.2A$1525.A.A22$
1549.2A$1548.2A$1550.A52$1604.A$1603.2A$1603.A.A35$1641.A$1640.2A$
1640.A.A55$1697.2A$1696.2A$1698.A26$1724.3A$1724.A$1725.A27$1755.A
$1754.2A$1754.A.A23$1780.A$1779.2A$1779.A.A22$1803.2A$1803.A.A$
1803.A21$1826.2A$1825.2A$1827.A32$1861.A$1860.2A$1860.A.A71$1932.
3A$1932.A$1933.A52$1988.A$1987.2A$1987.A.A!
That's

Code: Select all

0, 126, 102, 100, 195, 90, 91, 95, 98, 105, 90, 101, 141, 94, 159, 92, 146, 99, 90, 152, 139, 144, 92, 161, 131, 116, 101, 114, 111, 112, 93, 127, 98, 102, 114, 107, 157, 90, 90, 90, 91, 91, 243, 113, 139, 108, 95, 127, 121, 99, 257, 144, 94, 218, 148, 226, 111, 119, 100, 95, 91, 138, 289, 219
Since that block would normally be cleaned up during the initial construction, we don't need to find a new cleanup recipe either, the existing one will just work. The last boat in the NE might also work on that side, since we can make it into a honeyfarm, and most slow salvos start by making a honeyfarm.
Not only like ... it's exactly the same solution :), and yes I would start with the boat… …. I typically use honey farm as start/connection of the construction and use corresponding block to specify it for pslmake. With 50% chance I got it. … but if the construction starts with a long move, there is big chance one of the transition blocks is converted to the required side… I did not spent time to allow such specification of pslmake origin.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

So new version ... incorporating '%' pushed to the project git ... (defragUI branch of pslmake updated as well)

EDIT: There were false positives for glider (-1,7) ... corrected (in the defragUI branch)

running on

Code: Select all

% b86 % b84|b89 % o89 o87 o73 e82 o93 e89 % b99 % o95 o97 o100 % b126 % b123|b128 % b121 % b122 % b119 %
b106|b107|b108|b109|b110|b111 % b99 % b89 % b92 % o93 e95 e81 e85 % o99 e102 o103
e104|e105|e106|o101|o102|o103 o90 % b113 % b122 % b111 % b113 % b113 % o114 e107|e108|o111|o112 o99 e110 %
b110 % o119 o129 e126 o118 e116 % e113 o118 o108 e115 b107 o115 e119 e103 e116 e108
e120|e121|o116|o117 e130 o116 b146 b146 b136|b137|b140 o143 e157 b135 e143 b152 b146
b151|b154|b155 b146 o139 b154 o135 b142 e145 e154 e157 b132|b135|b136 e144 e149 e144 b151 e134
b138 b142 b135 b132 b138 o138 o128 b133 e123 o130 o124 b143 b144 b154 b146 o141 b137|b138 o140
b126 o129 b106 b98 o110 o103 b93|b94|b97 o101 o103 e103 b108 o87 e83 e94 e101 e106 e100
e96 b90 o89 e101 b109 e109 e101|e102 b94 b97 b95|b100 o95 e100 o100 b103 e91 e106 b137
o133 b142|b143|b144|b145|b146 e135 e125 o124 e137 b141 o145 o154 o178 o176 b172 b170 e180 o185
o185 e168 b161 b159|b164 o164 o162 o157 e152 e148 o158 b151 b130|b131|b132 b134 b132|b137 e137
o140 o123 o136 b120 b120 b118|b123 o123 e115 e116 b123 b122|b123 o116 b112|b116 b107 b90 o89
e101 o90 o94 o98 b82 o78 e75|e76|o71|o72 e83 o95 o99 o79 e89 b86 b86 b83|b88
o83 o96 o102 b75 e81 o98 o88 e84 e100 o106 e110 o93 o102 e97 b86 b86 b79 o91 e86
e80 b77 o141 o151 o147|o148 b142 b151 o147 o147 e146 e156|e157|o155|o158 b140 o144 e148 b147
e159 e155|e156|e157|o152|o153|o154 b159 o161 e159 b150 o140 o150 e138 o143 o155 e149 o151 e145
e159 o148 b154 b162 o145 b145 o159 e149 o149 b184 o194 b207 b207 o210 b194 e205 e211 e205 o219
b235 b222 b230 b230 b220 b212|b219 b233|b234|b235|b236 b239 b236|b241 o236 e241 e244 e241 b224
o183 b176 o173 o165 b167 e176 o181 o172 b167 b160 o160 o161 b155 e157 o161 b159 o157 e149 e140
o145 e152 e149 e149 e154|o144|o146 b168 b179|b182|b183|b186 e183
gives exactly the original result.
Seems % switching works (finishing in the other phase is just 497 ticks slower thanks to % switching), but we were very lucky in phase selection.
(there is no need to have % between b* sections, but the slowdown is negligable) ... there is no optimization in code to skip computation of b sections after %.

So next step is probably to extend the moveset by NW emissions.
russellsprouts wrote: May 17th, 2026, 9:55 pm The closest match to the pattern you calculated is:

Code: Select all

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction SW --optimize population --color 0 --parity 1
...
gliders = 953
duration = 135240
Your result was ~840 gliders!

And here are the rest of the possibilities:

Code: Select all

$ uv run compile_p120_fast.py ~/Downloads/crab-stretcher-slow-salvo.mc --direction SW --optimize population --color 0 --parity 0
...
gliders = 960
duration = 136939
...
If I understand the duration well ... we have the comparisson ... (I do not consider the simkin gun build ... measuring from the first to last glider)

Code: Select all

duration = 117924, 843 gliders (the original one with or without %)
duration = 118421, 867 gliders (the one with switched final phases)
duration = 119501, 879 gliders (the one with switched phases ... without %) 
russellsprouts wrote: May 17th, 2026, 9:55 pm I just pushed a compiler with similar agnosticization to the repo -- https://github.com/RussellSprouts/short ... 20_fast.py. It doesn't have the double glider recipes, though, so yours is much more efficient.
I have checked your code (I have not tried to understand what the dag does), it seems to me you finally use fixed order of gliders, chosing alternative lanes and phases similarly like I do. The difference is that I expect the input to be already preprocessed.
Then you use a beam search ... it seems to me this case is an exception where beem search is not needed, especially when you work with very limited set of emissions. There are typically less then 6 glider lane alternatives for an emission if we mutliply it by the number of different used emissions, the number remains rather small. ... when the number of used simkin gliders is the same, the recipe which can emit the next glider earliest is definitely dominating all others ... I took the road to precompute whatever could be easily tabulated not to waste time later (aiming for long recipes) ... optimal move table is periodic in both directions (with some preperiod) so I have computed it to both infinities. Whenewer I need to adjust for an emission, I just took the value. I have precomputed single emissions as well (including the adjustment) doing the dominance calculations and leaving only the emissions which could be optimal (depending on followup), so during the search I try just the prefiltered options.
I have not precalculated double emissions with adjustments ... as at most one doubleemission is available so there will be no filtering and adjustment is fast. During the search I do not check the dominance (except the trivial cases) ... maybe I should (but the search remains rather narrow anyway).

Now I have results for the NW:

Code: Select all

duration = 128030, 993 gliders (the original one with %)
duration = 125615, 969 gliders (the one with switched final phases with %)
duration = 129230, 1003 gliders (the original one without %) 
duration = 125801, 970 gliders (the one with switched final phases without %)
So for me the direction SW is more efficient. (The emission using just 2 gliders actually uses 4 simkin gliders and the time cost 368 is not that amazing either) ... of course somebody could be interested in minimal population, but the duration matter as well ... and for packing 0e0p metacell the duration is definitely what matters.

... Using this Simkin ECCA would make arranging readnext state "tape" easy ... to fit given number of 0,1,2,3,4,5,6,7 gliders to given interval of 1024-X ticks ... for given 512+16 intervals using cup/uncups and [0][4] or [2] would be easy (if natural solution would fail) ... and a small drift due to constraint does not mind.

I had to shift the construction and now the ECCA is too fast for the slow salvo ... I should add (manually) 'w' to the phaselane program to wait 120 ticks during the construction ... (just before the last 4 gliders)
tmp.mc
speboe to crabsinglestretcher (with dirt)
(18.61 KiB) Downloaded 11 times
Here is not optimalized move along the intercell distance. The time between the crab ignition and the fuse ignition would be spent on move arm forward ... we are just waiting 286512 ticks here (definitely time for cordership move ... to be optimalized later).
move697584plus44.mc
(27.87 KiB) Downloaded 8 times
... and now I can see the shell build filtering requires attention ... oh OK, I need move by 1hd forward. (and the long move is able to do even hd only ...) ... and it works well (SoD not affected) ... with starting position of the speboe shifted "4,3".

... So intercell skip (nonoptimally) solved and now its time to think about shell allocation.

Having the simkin gun ... we could probably do allocation without wasting too much time using just one crab double stretcher and some splitters and mwss seeds.

Hmm, looking for cheap ignition of crabstretcher wick from side, Pavgran's loaf with block works for further wick

... EDITED

Code: Select all

x = 350, y = 148, rule = LifeHistory14
179.I$178.I.I$.I177.I.I$I.I177.I.I$.I.I177.I.I$2.I.I87.I.I87.I.I$3.I.
I86.2I89.I.I$4.I.I86.I90.I.I$5.I.I177.I.I$6.I.I177.I.I$7.I.I177.I.I$
8.I.I177.I.I$9.I.I177.I.I$10.I.I10.I166.I.I10.I$11.I.I8.I.I166.I.I8.I
.I$12.I.I8.I.I166.I.I8.I.I$13.I.I8.I.I166.I.I8.I.I$14.I.I8.I.I166.I.I
8.I.I$15.I.I8.I.I166.I.I8.I.I$16.I.I8.I.I166.I.I8.I.I$17.I.I8.I.I166.
I.I8.I.I$18.I.I8.I.I166.I.I8.I.I$19.I.I8.I.I166.I.I8.I.I$20.I.I8.I.I
166.I.I8.I.I$21.I.I8.I.I166.I.I8.I.I$22.I.I8.I.I166.I.I8.I.I$23.I.I8.
I.I166.I.I8.I.I$24.I.I8.I.I166.I.I8.I.I$25.I.I8.I.I166.I.I8.I.I$26.I.
I8.I.I166.I.I8.I.I$27.I.I8.I.I166.I.I8.I.I$28.I.I8.I.I166.I.I8.I.I$
29.I.I8.I.I166.I.I8.I.I$30.I.I8.I.I166.I.I8.I.I$31.I.I8.I.I166.I.I8.I
.I$32.I.I8.I.I166.I.I8.I.I$33.I.I8.I.I166.I.I8.I.I20.2I$34.I.I8.I.I
166.I.I8.I.I19.2I$35.I.I8.I.I18.E147.I.I8.I.I$36.I.I8.I.I15.2E149.I.I
8.I.I$37.I.I8.I.I15.2E149.I.I8.I.I$38.I.I8.2I7.H159.I.I8.2I$39.I.I16.
H160.I.I$40.I.I13.E.H161.I.I$41.2I13.E164.2I$54.2HE3.3H$245.I$58.H
185.I.I$58.H185.2I$58.H$57.I$57.I.I$57.2I4$37.2I7.I$37.2I6.I.I$44.I2.
I180.2I$45.2I180.I.I$228.I$217.2I$217.2I4$231.3I$231.I$232.I77$348.I$
347.2I$347.I.I!
but the closer wick should be ignited in symmetric "phase" so far I cannot fing anything better than 2 boats and block (ott+seed shown).
Any sugestions? ...
Oh may be here?
Pavgran wrote: July 31st, 2020, 5:36 pm
Pavgran wrote: September 7th, 2020, 9:32 am
Last edited by Hippo.69 on June 3rd, 2026, 10:58 am, edited 1 time in total.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

Oh, fortunatelly I am making progress slower than thinking forward ... building double stretching crab from side is absolutely horrible idea.
The main reason why to use crab expansion rather the cordership one is the allowed "time travel". We are expected to do the construction on the future target and just ignite the whick at the correct moment to settle the construction in the selected distance.

We definitely do not want to do the construction with slow^2 gliders. So building the crabstretcher from behind, sending the constructin and then naturaly ignite the fuses from behind... . So when building the shell from S corner (with input single lane stream from SW parent), we should send crabstretcher to W corner (with ecca gliders directed to NW), building shell W and probably even SWW while crab is traveling.
(glider and mwss seeds at W could be build first, and splitter seeds at SW second, followed by gliders hitting the splitter seeds (first wick determines SW, second W), we should build mwss and glider seeds at S before the gliders from SW return) <- this would be tiny portion of time compared to the waiting time for ignitions, but fortunately we could be building W, SWW or even SSW while waiting. ... and we can do this with simkinecca gliders.

Once we are done with W, SWW and SSW shell construction, we simply destroy the simkinecca and build another (on E corner which was allocated by synchronized lwss from W and glider from S) ... ok the glider could not be sent on required lane while simkinecca is still alive.

Solution 1 is to make the target as close as possible and reposition it using speboe arm from S (to which simking ecca would be converted).
Solution 2 is to make the glider seed (ott) "just on the input lane" and destroy the simkin ecca just before the glider from SW returns.

Solution 2 would interrupt the W/SWW/SSW construction, it will be finished using simkin ecca in E corner.

Seems we would not use snarkmakers during the shell build at all. I was so sceptical with proposals to make the 0e0p cell using ecca as moving the arm block the required huge distances would be the limiting factor, but when you can construct while doing the long move ... the only long waits would be arm pulls from E to SEE, from SEE to SSE(, and finaly fom SSE to S ... probably not needed) and these reallocations are at the speed c/4.

We should finish the shell costruction by building the eater on the input lane (while the open kernel glider is arriving to the parent cell). Similarly we want two tub blinker splitters on the input lane. We probably should make a "seed" for it and hit it at a correct time.

So solution 1 or 2? ... at solution 2 we have an extra cost in reallocating from SSE to S (and some troubles with "ott on input lane"), at solution 1 we need about 6 speboe 0 degree gliders to do the reallocation. Seems 1 is the winner the SSE to S reallocation would take much longer then the 6 speboe 0 degree gliders. So first ECCA should be responsible for the S shell portion as well (and building the seed for input lane interruption).

Actually we neednot hurry with sending gliders to SW splitter(s), we can (Solution 3) time it in a way the return glider arrives at the time S construction is finished (we can activate the SW splitter hitting W glider seed (ott) an S lwss seed earlier as there is nothing blockin their path) ... so actually we can take the best from both 1 and 2 solutions ... finish W, SWW, SSW, S construction, build the input lane interruption seed and ott "on input lane" and destroy the ecca ... just before the glider hits the "on input lane ott" ... and simkin 0 degree recipe could follow ... working on speboe which would arrear at correct position just in time.

What is crucial is the long waits (during the shell build) took less then one side of the cell so about 1/8 of the DNA length. The construction salvas took constant time (it seems to me one side of the cell is good estimate for reallocations needed during the directed portion build plus another construction salvas constant) so we can definitely scale the cell size to be constructible in this way. We will see how 2^{24} would be far from the entire recipe required length ...

... maybe I should take into account also W, SWW, SSW, N, NNE, NEE, ... reallocations, and mainly NNW and NWW allocations ...

Probably I should rather use SSSS notation instead of S ...and SSWW instead of SW, SWWW instead of SWW ...
We need to build shell constructions at NNNN, NNNW, NNNE, NWWW, NEEE, WWWW, EEEE, SWWW, SEEE, SSSW, SSSE, and SSSS.
We would use SSWW spot just for allocation of EEEE and NNNN. (WWWW and SSWW would be craballocated).
Start of the WWWW construction sends two gliders back to SSSS, and SWWW construction, and later SSSW construction
should wait for them to have a target (the constant time to build SSSS could be used meanwhile).

What is timing of the solutions (just the allocation costs):
... it would be long post ... I should finish it externally and then post it ...

Let q be the WWWW-SSSS distance (side of the cell) ... time for glider to travel from SSSS to SSSW.
Let d variable ... is total recipe delay caused by our planning decisions.
We are in "foton c/4" perspective ... thinking about d, but we need "gods perpendicullar observer perspective as well" o variable.

Here is a possible time schedule (the constant delays accumulate, but the q dependent allocation tooks 10q):
EDIT: plan updated to 6q (plus a lot of constants)

Code: Select all

SSSS o=0, d=0 is build (with seeds around the input lane)
SSSS o=1q, d=1q kernel opennig glider is sent to parent it opens the directed build at d>5q, it arrives to the child cell at d>6
SSWW o=2q, d=0 crabstretching to SSWW is completed (gliders hitting the SSWW splitters/180ott's) mwss E seed created.
SSSW o=3q, d=2q construction finished (targeting glider from SSWW), just with gliders to SWWW going through splitter to SSWW and SSSS created and hit
WWWW o=4q, d=0 crabstretching to WWWW completed (gliders reaching WWWW lwss and glider seeds) WWWW is build (and ott from SWWW to NWWW)
SSSS o=4q, d=4q (gliders reaching SSSS mwss and glider seeds, another mwss seed created and hit to go to SS, another ott from SSSW to SSSE is created) gliders sent through SWWW to NNNE, through SSSW to NEEE and through SSSW and SSSS to SEEE (first two through splitter the other output using EEEE reflectors reaching the destination) simkin OGGCA destroyed at SSSS
SSWW o=4q, d=2q mwss seed is hit from SSSW msww goes to SS
SSSW o=4q, d=3q slow^2 gliders are sent to SS, splitter to SS and SSSS is created and hit, splitter to SS and SWWW is created and hit.
SSSW o=5q, d=4q reflect glider to NEEE
SWWW o=5q, d=2q construction using WWWW glider as target finished, ott from SSSW to WW created
SS   o=5q, d=3q collision of perpendicullar mwss's creates target, additional ott (from SSSW to SSSE) is built by slow^2 gliders from SSSW and hit, another ott (from SSSW to WW) is built by slow^2 gliders and hit
SSSS o=5q, d=5q glider from SSSW is reflected to SSSE
SSSE o=6q, d=5q target created by collision of gliders from SSSW through SS and SSSS.
SWWW o=6q, d=3q glider from SSSW reflected to WW, slow^2 gliders sent to WW to create additional ott from SWWW to NWWW, splitter to WWWW and WW created and hit
WW   o=7q, d=3q target created, ott from SWWW to NWWW created and hit
WWWW o=7q, d=3q glider from SWWW reflected to NWWW
SWWW o=7q, d=4q reflect glider from SSSS to NNNE
SSSE o=7q, d=6q simkin OGGCA constructed after d=6q recipe passed by (stopping and destroying EEEE simkin OGGCA) SSSE is built, gliders building NWWW are sent simkin OGGCA is destroyed and input blocking seed hit
NNNN o=8q, d=0 target created
NWWW o=8q, d=3q target created (SWWW through WWWW and WW)
EEEE o=8q, d=4q reflections to NNNE, NEEE, SEEE slow 2 (/180 OGGCA) recipes to create 3 otts at SEEE sent, splitter to NNNW through NNNN and SEEE created and invoked, splitter to NN through NNNE and SEEE created and invoked, splitter to EE through NEEE and SEEE created and invoked, EEEE build, recipes building NNNN, NNNE and NEEE sent
NEEE o=9q, d=4q NEEE target created (SSSS through SSSW and EEEE) and NEEE is build just when NNNN a NNNE gliders went around, ott from EEEE to EE created and hit
SEEE o=9q, d=6q ott's for NNNW, NN, EE allocations created and used, ECCA target moves here and SEEE is finished, NNNW recipe sent(, NN and EE as well)
EE   o=10q, d=6q target created and positioned just after gliders to NNNW and NN passed
NNNE o=11q, d=4q NNNE target created and NNNE is build just when NNNN gliders went around ott from EEEE to NN created and hit
NN   o=12q, d=6q target created and positioned just after gliders to NNNW passed
input path seed is addressed and ECCA destroyed (in sync)

NNNN o=12q, d=4q ott to NNNW created and used, NNNN is build (from EEEE)
NNNW o=13q, d=6q NNNW target is created (EEEE through SWWW and NNNN) and NNNW built
EDIT: A bit more specified from the stream "foton" perspective:

Code: Select all

stream foton d perspective (with more detailed view)
SSSS o=0, d=0 moves forward and build simkin OGGCA (with target block NW) far enough tor WWWW, SWWW, SSSW and SSSS constructions
              build crabdoublestrer to NW seed and send it as early as possible (sync mode started at launch)
WWWW o=4q, d=0 crabstretching to WWWW completed (block loaf blinker ... with just 1 pixel of block reachable, but blinker is accessible rather well)
               do small cleanup to make block more accessible
               build mwss to EEEE seed ASAP
SSWW o=2q, d=0 crabstretching to SSWW is completed (well accessible block)
               build WWWW,SSSS to EEEE splitter ASAP and activate it
WWWW o=4q, d=0 (glider reaching WWWW mwss seed)
               build ott180 to SWWW and activate it (sync should be maintained ... position of SWWW, forbidden lane till 2q)
               build ott180 to NNNN through SSSS
SSWW o=2q, d=0 build SSSW ott180 and activate it (sync should be maintained ... position of SSSW, forbidden lane till 2q)
               build WWWW,SSSS to NNNN splitter and activate it
WWWW o=4q, d=0 (glider reaching WWWW ott180 to NNNN through SSSS) build WWW (till 4q) and slow^2ott90 from SWWW to NWWW(till 3q)
SSWW o=2q, d=0 build SSSW ott180 and activate it (sync should be maintained ... position of ott180 SSSS to SSSS for proper timing of input line blocking seed activation) forbidden lane till~3.9q
               build SSSW ott180 and activate it (sync should be maintained ... position of ott180 SSSS to SSSS to EEEE for proper timing of stopping EEEE Simkin OGGCA) forbidden lane till~0.9q
               build mwss SSSW to SS seed (nothing else remaining) (till 2q)
NNNN o=8q, d=0 target created (mwss travels backward in time) 

SSSS o=d~0.2q  (sync targeted glider from WWSS) build 180ott SSSS to SSSS "part" of the future stop the EEEE simkin seed
SSSS o=d~0.5q  ignite SSWW wick (travels back in time)
SSSS o=d~1q    ignite WWWW wick (travels back in time)
SSSS o=1q, d=1q kernel opennig glider is sent to parent it opens the directed build at d>5q, it arrives to the child cell at d>6
SSSS           build WWWW to EEEE ott (till 4q), build SSWW to NNNN mwss seed (till 4q), build SSSW to SS mwss seed (till 4q), build SSSS (E part) (till 4q)

SWWW o=5q, d=2q glider from WWWW should be sync targeted, slow2 ott90 from SSSW to WW created (till 3q)
SSSW o=3q, d=2q glider from SSWW should be sync targeted, splitter SSWW,SSSS to SS created and hit (a target remains)
SSWW o=4q, d=2q (mwss seed is hit from SSSW msww goes to SS, SSWW site remains empty)
SWWW o=5q, d=2q finish slow2ott90 from SSSW to WW(till 3q), build slow2ott90 from SSSS to NNNE (till 4q)
SSSW o=3q, d=2q SSSW construction finished (till 4q), build SS,SSSS to SSSE splitter (till 3q), build SS,SWWW to WW splitter (till 3q), build slow2ott90 from SSSS to NWWW (till 4q) 

SSSW o=4q, d=3q slow^2 gliders to SS building slow2ott90 from SSSW to SSSE, activate splitter SS,SSSS to SSSE
                slow^2 gliders to SS building slow2ott90 from SSSW to WW, activate splitter SS,SWWW to WW
		build slow2ott90 from SSSS to NWWW (till 4q) 
SS   o=5q, d=3q (collision of mwss's from SSSS and SSWW creates target, slow^2 gliders from SSSW build slow2ott90 from SSSW to SSSW which is hit)
                (slow^2 gliders from SSSW build slow2ott from SSSW to WW which is hit)
SWWW o=6q, d=3q (glider from SSSW reflected to WW), slow^2 gliders sent to WW to create slow2ott90 from SWWW to NWWW, build WWWW,WW to NWWW splitter and activate it, 
		if not finished ... build slow2ott90 from SSSS to NNNE (till 4q)
WW   o=7q, d=3q (target created by SSSW through SWWW and SS gliders), slow^2 gliders from SWWW created slow^2ott90 from SWWW to NWWW and hit
WWWW o=7q, d=3q (glider from SWWW reflected to NWWW, rest of slow^2ott destroyed)
NWWW o=8q, d=3q target created (SWWW through WWWW and WW)

SSSS o=d~3.9q   (sync targeted glider from WWSS) build 180ott SSSS to SSSS "part" of the future "input lane blocking seed"
SSSS o=4q, d=4q (glider reaching SSWW to EEEE ott)
		slow^2 gliders creating ott180 from SSSS to SEEE at EEEE created
                splitter SSSW(SSSS),EEEE to SEEE created and activated
		(glider reaching SSWW to NNNN mwss seed)
                (glider reaching SSSW to SS mwss seed)
                splitter SWWW,EEEE to NNNE created and activated               
SWWW o=7q, d=4q (reflect glider from SSSS to NNNE)
                converted to rotationally symmetric position for directed build
SSSS o=4q, d=4q splitter SSSW,EEEE to NEEE created and activated
SSSW o=5q, d=4q (reflect glider to NEEE)
                build 180ott from SSSS to SSSS and SEEE (no other target .. except the SSSW pattern)
SSSS o=4q, d=4q (ott from SSSW to SSSE is created)
                SSSS west part is build 
                ott from SSSW to SEEE created
                ott from ~2.9S,1.1W to EEEE (simkin gun stopper) created
                simkin OGGCA converted to speboe at SSSS
                SSSS middle part "input blocking" seed is build addressed throught ott from SSSE to NW and 180ott build at ~3.9q (may be replaced by before OGGCA conversion)
                exactly timed glider sent to ~2.9S,1.1W ott to stop the Simkin OGGCA at EEEE
                speboe gliders sent to EEEE to convert to speboe
	        SSSS speboe destroyed
SSSW o=5q, d=4q (180ott from SSSS to SSSS activated)

EEEE o=8q, d=4q (target created (SSWW through WWWW and SSSS) converted to (180ott from SSSS to SEEE) and to speboe from SSSS
                (180ott from SSSS to SEEE activated)
		simkin OGCCA created at EEEE (with targets on both sides?, directed mainly NW)
                slow^2 reflectors to NNNE, and NEEE created (and hit), 
                SEEE (180 OGGCA) recipe send to create slow^2 ott from EEEE to NNNW,
NNNN o=12q,d=4q slow2ott90 EEEE to NNNW created
EEEE o=8q, d=4q splitter SEEE,NNNN to NNNW created and activated
NNNN o=12q,d=4q NNNN built (from remnants of the slow^2ott) (till 6q with interruption at 5q)
EEEE o=8q, d=4q SEEE (180 OGGCA) recipe send to create slow^2 ott from EEEE to NN,
NNNE o=11q,d=4q (target created SSSS through SWWW and EEEE) slow2ott90 EEEE to NN created
                NNNE built (from remnants of the slow^2ott) (till 6q with interruption at 5q)
EEEE o=8q, d=4q splitter SEEE,NNNE to NN created and activated
                SEEE (180 OGGCA) recipe send to create slow^2 ott from EEEE to EE,
NEEE o=9q, d=4q (target created SSSS through SSSW and EEEE) slow2ott90 EEEE to EE created
EEEE o=8q, d=4q splitter SEEE,NEEE to NN created and activated
NEEE o=9q, d=4q convert (remnants of the slow^2ott) to rotationally symmetric position for directed build
EEEE o=8q, d=4q EEEE build (both sides) (till 6q with 5q interruption)

SSSS o=5q, d=5q glider from SSSW is reflected to SSSE
SSSE o=6q, d=5q target as speboe created (SSSW through SS and SSSS)
		simkin OGGCA constructed directed preferably to SE
NWWW o=10q,d=5q build NWWW (till 6q)
WW   o=9q, d=5q convert to rotationally symmetric position for directed build (if it isn't)
SS   o=7q, d=5q convert to rotationally symmetric position for directed build (if it isn't)
SSSE o=6q, d=5q convert to rotationally symmetric position for directed build and convert the simkin OGGCA to speboe
                input blocking seed is targetted, speboe deleted

SEEE o=9q, d=6q (target created SSSS through SSSW,SSSS and EEEE)
                (slow^2ott for EEEE to NNNW created and used)
                (slow^2ott for EEEE to NN created and used)
                (slow^2ott for EEEE to EE created and used)
                
                ECCA target moves to SEEE
NNNW o=13q,d=6q (target created EEEE through SEEE and NNNN)
		convert to rotationally symmetric position for directed build (if it isn't)
NN   o=12q,d=6q (target created EEEE through SEEE and NNNE)
                convert to rotationally symmetric position for directed build (if it isn't)
EE   o=10q,d=6q (target created EEEE through SEEE and NEEE)
                convert to rotationally symmetric position for directed build (if it isn't)
SEEE o=9q, d=6q SEEE is finished using last simkin OGGCA gliders
EEEE o=10q,d=6q salvo converting stopped simkin OGGCA to E construction target block of child cell arrives (middle of EEEE construction)
Allocation of NN, EE, SS, WW and probably NNEE, SSEE, (SSWW), and NNWW for the faster direct cell construction should be probably incorporated as well.

I am not sure we need to allocate the SEEE resp. SSSE targets before the "arm" moves there, but I bet it is, we sent synchronized gliders from E to meet at NNNW resp. NWWW and then we can reallocate the "arm" and start the NNNW/NWWW construction. If we reallocate the "arm" earlier, and hit the EEEE splitter from distance, we should wait 2*the distance for the target to appear before we could send the recipe there.

Of course the smaller q relative to the construction constants is, we could hit EEEE splitter from bigger distance.

OK ... now we have d=0, d=2q, d=4q, d=6q and d=10q groups of recipe parts, we have to reorder recipes inside them and find the required offset constants ... ... maybe not yet ... planning directed targets shold be revoked before we decide when to open the kernel.
I am actually not sure with the d=10q SSSE. The building costs of the simkin gun are small and there is probably no need to build SSSE, NWWW using EEEE gun. If we make SSSE speboe target at d=6q (after SEEE is finished and EEEE gun destroyed), we can make the OGGCA at d=6q and finish construction at d=6q.

Now it's time to compare the construction constants with q. (in the limit case the constats are 0 we could sent a lot of crabstretchers and do the construction in q=0, but I expect this is not the case and the constants could add up to small units of q) ... actually we want to finally chose q such that the "small units of q are obtained", but we should have an estimate of split costs between shell and oriented build ... to know how many small units to target. ... this would afect the ~0.2q ~3.9q constants. We could as well use ott at WWWW if later times are required.
Last edited by Hippo.69 on May 30th, 2026, 11:28 am, edited 8 times in total.
User avatar
dvgrn
Moderator
Posts: 12023
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: 0E0P constructions

Post by dvgrn »

Hippo.69 wrote: May 28th, 2026, 2:32 amOnce we are done with W, SWW and SSW shell construction, we simply destroy the simkinecca and build another (on E corner which was allocated by synchronized lwss from W and glider from S) ... ok the glider could not be sent on required lane while simkinecca is still alive.
I'm not quite clear on this point. The required lane runs through the Simkin ECCA, no doubt. But in the grand scheme of things, how expensive would it be to build OTTs that allow the Simkin ECCA to generate a signal that finds its way around the Simkin gun blob and ends up back on the correct lane?
User avatar
apg
Moderator
Posts: 3007
Joined: June 1st, 2009, 4:32 pm

Re: 0E0P constructions

Post by apg »

Why is it being referred to as a 'Simkin ECCA'? It's a construction arm involving a Simkin gun, and it's efficient in terms of the number of input gliders, but it's not an ECCA because the input glider stream isn't an effective compression algorithm: there are many bits of information needed to describe the timing of each input glider.
What do you do with ill crystallographers? Take them to the mono-clinic!
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

dvgrn wrote: May 28th, 2026, 4:19 am I'm not quite clear on this point. The required lane runs through the Simkin ECCA, no doubt. But in the grand scheme of things, how expensive would it be to build OTTs that allow the Simkin ECCA to generate a signal that finds its way around the Simkin gun blob and ends up back on the correct lane?
It is something like slow^4 ... but I think in the timespace planning we are fine, the simkin already disapears at d=4q.
(of course ... there are the construction constants ...)
apg wrote: May 28th, 2026, 6:03 am Why is it being referred to as a 'Simkin ECCA'? It's a construction arm involving a Simkin gun, and it's efficient in terms of the number of input gliders, but it's not an ECCA because the input glider stream isn't an effective compression algorithm: there are many bits of information needed to describe the timing of each input glider.
What do you suggest to use? It is faster in sending slow recipes then ECCA's we used, but it is missing the "bits" interface. We need compillers for ECCA's as well as for this Simkin "something" (especially when the arm contains an inner state which could be nontrivial to track). We are using term binary arm (missing the "bits" interpretter), and I was using term fusion arm in unidimensional ship project ... for the translation from slow salvo to the blinker positions. So for me "arm" is rather the compiler from slow salvo then circuit able to interpret individual instructions ... but I would definitely follow better termminology if provided....

So would just "Simkin CA" be appropriate? DBCA and ECCA used in RCT15/Uni... were binary arms with interpreted inputs when missing signals would cause no harm ... in Uni the clock was added so there was no missing signal (missing original signal was signal modifier, so Uni... could be also interpreted as clocked single lane arm). We probably should emphasise that our arm is single lane, but mainly with time encoded input.

But this would be just saying we have single lane time encoded something. The Simking gun gives it very important speedup so using compiler able to do the speedup ...
User avatar
dvgrn
Moderator
Posts: 12023
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: 0E0P constructions

Post by dvgrn »

Hippo.69 wrote: May 28th, 2026, 6:37 am
apg wrote: May 28th, 2026, 6:03 am Why is it being referred to as a 'Simkin ECCA'?
What do you suggest to use? It is faster in sending slow recipes then ECCA's we used, but it is missing the "bits" interface.
The inventor of the mechanism has provisionally settled on a generalization of the term, oncoming glider gun construction arm, which abbreviates to "OGGCA"... unless someone wants to advocate for some fancier term for the direction of the glider gun, like "retrograde", before this becomes common terminology.

The generalization is because it's quite possible that we'll get the same mechanism working even more efficiently at some other period (like p48). Discord link:
On 5/22/2026 on Discord, dvgrn wrote:The Rob's p16 can be built before anything else, I would think, with an easy 8-object seed. Everything looks pretty doable. It might even end up about the same cost as a p30 Gosper glider gun, just because you don't have to build the extra objects to synchronize the startup of the two queen-bee pieces. Just have to explode a honeyfarm whenever you're ready.

Actually two of the catalysts could be built either before or after the Rob's p16 -- whatever was convenient -- and probably the leftover junk could be used for constructing the remaining catalysts and the honeyfarm bait object(s):

Code: Select all

x = 29, y = 21, rule = LifeHistory
17.3A3$22.2A$22.A.A$2C21.A$.C13.2D$.C.C11.2D10.2A$2.2C23.2A$21.2A$21.
2A2$26.A$8.A17.A$8.2A16.A$7.A.A$2.2D18.3A$.D.D$.D16.2C7.A$2D16.2C7.A$
27.A!
russellsprouts
Posts: 50
Joined: January 28th, 2026, 10:04 am

Re: 0E0P constructions

Post by russellsprouts »

Hippo.69 wrote: May 28th, 2026, 2:32 am We definitely do not want to do the construction with slow^2 gliders. So building the crabstretcher from behind, sending the constructin and then naturaly ignite the fuses from behind... . So when building the shell from S corner (with input single lane stream from SW parent), we should send crabstretcher to W corner (with ecca gliders directed to NW), building shell W and probably even SWW while crab is traveling.
(glider and mwss seeds at W could be build first, and splitter seeds at SW second, followed by gliders hitting the splitter seeds (first wick determines SW, second W), we should build mwss and glider seeds at S before the gliders from SW return) <- this would be tiny portion of time compared to the waiting time for ignitions, but fortunately we could be building W, SWW or even SSW while waiting. ... and we can do this with simkinecca gliders.
Building from behind doesn't necessarily need slow^2 gliders -- there are recipes for 0 degree gliders on most close lanes, and we could find more with deeper searches.

You might also be able to build it from the side using similar techniques to how I built the merge circuit in the demonoid here: viewtopic.php?f=2&t=2031&start=3475#p228926. I used a combination of 90 degree gliders for rare objects far away, direct recipes for objects close by, and 180 degree gliders to activate seeds for rare objects close to the lane.

It's not too difficult to find recipes for common objects near the lane. If a clean recipe doesn't already exist, you can usually find one that includes the object you want and clean it up with 3-4 more gliders.

I made the recipe for the merge circuit by hand, but it wouldn't be too difficult to adapt a compiler script to help. The logic for delaying or swimming upstream to place an object at the right depth works the same as it does for the 90 degree glider recipes.
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

russellsprouts wrote: May 28th, 2026, 11:30 am Building from behind doesn't necessarily need slow^2 gliders -- there are recipes for 0 degree gliders on most close lanes, and we could find more with deeper searches.

You might also be able to build it from the side using similar techniques to how I built the merge circuit in the demonoid here: viewtopic.php?f=2&t=2031&start=3475#p228926. I used a combination of 90 degree gliders for rare objects far away, direct recipes for objects close by, and 180 degree gliders to activate seeds for rare objects close to the lane.
I am allocating square (even when it has 45 degree orientation, it is still a square), I had to choose sending crabstretcher either 0 or 90 degree. Sending it 0 degree would mean building it from side, while sending it 90 degree ... building it from behind. As I want to build the cell waisting as small amount of time as possible, I want to address future target even before the target exists. It means sending gliders the same direction the crab is traveling. What is perfectly fine when the crab is build from behind, but when it is built from side, the gliders should be sent perpendicullar to the construction so slow^2.

Sending 0 degree gliders through the simkin gun is a problem, we have a blind spot too wide that the recipes are expensive and moreover if we want to create block in speboe position (after simkin destroyal), there is no recipe known to me which does not require gliders in the blind spot region
(that was problem for the looooong move implementation).
All these problems disappear when the crab is sent in perpendicullar direction.
russellsprouts wrote: May 28th, 2026, 11:30 am It's not too difficult to find recipes for common objects near the lane. If a clean recipe doesn't already exist, you can usually find one that includes the object you want and clean it up with 3-4 more gliders.

I made the recipe for the merge circuit by hand, but it wouldn't be too difficult to adapt a compiler script to help. The logic for delaying or swimming upstream to place an object at the right depth works the same as it does for the 90 degree glider recipes.
Oh yes, that could be much better solution then my "seed for input lane interruption" ... but if we use last escape gliders to build the "input lane interruption" we would not be able to destroy the simkin gun. ... So I probably have to choose among seed for simkin gun destruction or seed for "input lane interruption".

Oh maybe you ment something else ... the seed could definitely be built using in envelope methods ... at first we should decide how the seed should look like and then hopefully ... so using last simking gliders to make the seed, destroying the simkin gun but hitting the seed somehow after the destroyal salvo goes through, but before the gliders doing directed construction start comming.

But in the last timespace plan ... I want to finish construction in SSSS far before the simkin gun destroyal. ... Oh I am slow ... I neednot use the last simkin gliders to make the seed ... yep that could work ... and actualy it could be easier then using 180 degree recipes to build the seed in very near proximity of the input lane.

Code: Select all

x = 779, y = 650, rule = LifeHistory14
436.K$435.qPKqP$436.K6$448.2K$448.K.K$449.2K44$499.qP$498.3K11.K$499.
qP11.K.K$512.K14$484.2K$483.K2.K$483.K2.K$484.2K$492.K$491.K.K$491.K.
K$492.K135$715.yN$709.7yN$709.yN3$712.2yN.yN$711.yN.yN.yN$711.yN.yN.yN
$711.yN.yN.yN$712.3yN2$712.4yN$711.yN$711.yN$711.yN$711.5yN2$712.yN$
711.yN$711.yN$712.yN$711.5yN2$712.2yN.yN$711.yN.yN.yN$711.yN.yN.yN$
711.yN.yN.yN$712.3yN2$715.yN$711.yN2.yN$712.2yN$713.yN$709.7yN8$712.
4yN$711.yN$711.yN$711.yN$711.5yN2$712.2yN.yN$711.yN.yN.yN$711.yN.yN.yN
$711.yN.yN.yN$712.3yN2$712.3yN$711.yN3.yN$711.yN3.yN$711.yN3.yN$711.
7yN2$712.3yN$711.yN3.yN$697.yN13.yN3.yN$697.yN13.yN3.yN$640.2yN3.4yN
2.yN3.yN5.yN.4yN2.yN3.yN7.yN3.yN.4yN3.4yN2.3yN9.3yN$641.yN7.yN.yN3.yN
5.yN5.yN2.yN2.yN7.yN3.yN5.yN.yN3.yN.yN3.yN$641.yN3.5yN.yN3.yN5.yN.5yN
3.3yN7.yN3.yN.5yN.yN3.yN.yN3.yN$641.yN3.yN3.yN.yN3.yN.yN2.2yN.yN3.yN
3.yN.yN7.yN3.yN.yN3.yN.yN3.yN.yN3.yN$158.D482.yN4.3yN3.4yN2.2yN.yN2.
3yN3.yN2.yN8.4yN2.3yN3.4yN2.3yN$159.D481.yN31.yN$157.3D481.2yN30.yN
36.2yN33.yN30.2yN$709.2yN34.yN31.yN$711.yN4.3yN2.4yN3.3yN2.4yN8.yN2.yN
3.3yN2.yN.2yN2.4yN3.3yN4.yN$715.yN3.yN.yN3.yN.yN3.yN.yN3.yN7.yN.yN3.yN
3.yN.2yN2.yN.yN3.yN.yN3.yN3.yN$715.yN3.yN.yN3.yN.5yN.yN3.yN7.3yN3.5yN
.yN5.yN3.yN.5yN3.yN$715.yN3.yN.yN3.yN.yN5.yN3.yN7.yN2.yN2.yN5.yN5.yN
3.yN.yN7.yN$704.3yN9.3yN2.4yN3.4yN.yN3.yN7.yN3.yN2.4yN.yN5.yN3.yN2.4yN
3.2yN$703.yN3.yN13.yN$170.K532.yN3.yN13.yN$157.K11.K.K531.yN3.yN$156.
qPKqP11.K533.3yN$157.K$701.7yN$703.yN3.yN$259.2K442.yN3.yN$258.K2.K
441.yN3.yN$258.K2.K442.3yN$259.2K$267.K436.3yN$266.K.K434.yN.yN.yN$
266.K.K434.yN.yN.yN$267.K435.yN.yN.yN$703.yN.2yN2$703.5yN$139.K567.yN
$138.K.K11.qP554.yN$139.K11.3K553.yN$152.qP550.4yN8$703.7yN$705.yN$
705.2yN$704.yN2.yN$703.yN2$704.3yN$703.yN.yN.yN$703.yN.yN.yN$703.yN.yN
.yN$703.yN.2yN2$703.5yN$706.yN$707.yN$707.yN$706.yN2$D702.5yN$2D260.yN
15.K428.yN$2.D256.6yN13.3K426.yN$2.D259.yN2.yN15.K425.yN$3.D261.yN14.
2K421.4yN$4.D259.yN$5.D698.3yN$5.D697.yN.yN.yN$6.D696.yN.yN.yN$7.D
251.4yN.yN4.K433.yN.yN.yN$7.D251.yN7.3K105.2K326.yN.2yN$8.D257.K23.2K
83.2K$8.D213.qP3.qP39.2K15.2K5.K.K$9.D211.3K.3K55.2K7.K416.yN$10.D
211.qP3.qP38.yN26.2K409.7yN$10.D248.7yN437.yN$11.D247.yN19.K$11.D266.
K.K.2K$12.D265.K.K.K.K$12.D262.2K.K.K.K.K2.K$13.D251.yN9.K2.K2.2K.4K$
13.D245.7yN11.2K4.K6.K$14.D244.yN23.K.K3.K.K$14.D269.2K4.K.K$14.D276.
K$15.D$15.D$15.D$16.D$16.D$16.D$17.D$17.D$17.D$17.D$18.D326.2M$18.D
326.2M$18.D$19.D$19.D$20.D$20.D$20.D$21.D$21.D$22.D$22.D14.D$22.D14.D
$23.D12.D$24.D11.D$24.D11.D$25.D9.2D$25.D9.2D$26.D8.D$18.9D7.2D$19.2D
4.2D7.2D$20.D5.2D6.2D$18.2D.D5.2D5.2D$18.3D.D5.2D3.2D$19.2D.D6.3D.2D$
20.4D6.D.3D$20.2D.2D5.D.3D$21.2D.2D5.2D.2D$22.2D.2D4.2D.2D$24.D.D4.2D
.3D$24.5D2.2D2.2D$26.8D$27.3D.D$28.3D14$36.K$34.3K$33.K$33.2K$24.2K$
24.2K6$280.K$279.K.K$278.K2.K$279.2K5$216.2yN4.2yN4.2yN6.yN13.K37.K$
217.yN5.yN5.yN6.yN13.3K34.K.K$217.yN5.yN5.yN6.yN16.K32.K.K$217.yN5.yN
5.yN5.3yN14.2K32.2K$217.yN5.yN12.yN$217.yN5.yN5.yN3.yN2.yN$217.2yN4.
2yN9.2yN2$241.K$239.3K$238.K23.2K$238.2K15.2K5.K.K$255.2K7.K$264.2K2$
251.K$250.K.K.2K$250.K.K.K.K$247.2K.K.K.K.K2.K$247.K2.K2.2K.4K$249.2K
4.K6.K$255.K.K3.K.K$256.2K4.K.K$263.K49$250.K$250.3K$253.K$252.2K2$
238.yN$232.7yN$232.yN$241.K$239.3K$238.K23.2K$238.2K15.2K5.K.K$232.7yN
16.2K7.K$232.yN31.2K2$251.K$250.K.K.2K$238.yN11.K.K.K.K$233.yN.4yN8.
2K.K.K.K.K2.K$247.K2.K2.2K.4K$249.2K4.K6.K$255.K.K3.K.K$233.yN22.2K4.
K.K$232.yN30.K$232.yN2.yN$233.6yN$235.yN110$214.yN3.yN$215.yN.yN$216.
yN$215.yN.yN$214.yN3.yN!
The arrow points to the eater blocking the input lane. This is the shell portion in the SSSS region we should build through the input lane.
The eater and two tub blinker ots are blocking the input lane so instead of building them we should make a seed which transforms to them at the end of construction ... Oh I have just noticed one of the ots's actually does not block the input lane ... it only blocks the simkin glider lane.
(I have added the SoD input glider mark ... to check the ots's are ok).

(rest of the required construction is very far away in 8-20 regions ... 8 are shell required ... nontrivial, and the rest are just rotation symmetric allocation points the directed cell construction would use (3 rotation symmetric quadrupples, where one is needed all, but only 1 from both the last two quaduples is needed) ... maybe I would allocate just the always neded quadrupple and left the remaining 2 spots to be allocated by the directed construction. It has a lot of work in the region, I bat the allocation would not be the problem.)
russellsprouts
Posts: 50
Joined: January 28th, 2026, 10:04 am

Re: 0E0P constructions

Post by russellsprouts »

Hippo.69 wrote: May 28th, 2026, 1:27 pm Sending 0 degree gliders through the simkin gun is a problem, we have a blind spot too wide that the recipes are expensive and moreover if we want to create block in speboe position (after simkin destroyal), there is no recipe known to me which does not require gliders in the blind spot region
(that was problem for the looooong move implementation).
All these problems disappear when the crab is sent in perpendicullar direction.
Right, once the crab seed is launched you'll want to send the slow salvo gliders right behind it, so it makes the most sense to build it at a 90 degree angle.

Since the depth we build the crab stretcher is not too important, I do think we could make the crab stretcher cheaper by building it close to the construction lane, where we can use direct creation recipes instead of just slow salvo gliders. For example, the HNE16T14-based merge circuit normally takes ~150 slow gliders to build, but I was able to build it around the recipe stream using only ~200 fast gliders.

Code: Select all

#C [[ GRID MAXGRIDSIZE 14 ]]
x = 8742, y = 8751, rule = LifeHistory
13.3A17$2A$A.A$.A64.3A2$17.A6.2A38.A5.A$16.A.A5.2A38.A5.A$16.A.A
45.A5.A$17.A$34.A31.3A$9.2A23.3A$8.A.A26.A$9.A26.2A5$25.2A5.2A$25.
2A5.2A46.2A$79.A2.A$29.2A49.2A$24.A4.2A$5.2A16.A.A8.2A$5.2A16.A.A
7.A2.A$24.A7.2A$33.2A3.A13.2A$34.A4.A12.2A$37.3A$49.2A5.2A$49.2A5.
2A$12.A$6.2A3.A.A$5.A2.A2.2A$6.2A22$68.A$69.A$67.3A28$98.A$99.A$
97.3A28$128.A$129.A$127.3A28$158.A$159.A$157.3A28$188.A$189.A$187.
3A28$218.A$219.A$217.3A28$248.A$249.A$247.3A28$278.A$279.A$277.3A
28$308.A$309.A$307.3A11$314.3D6.D2.D.D.3D5.3D.3D.D.D6.D2.3D.3D6.D
2.D.D.3D5.3D.3D6.D2.3D.3D5.3D2.D2.3D6.D2.3D.3D5.3D.3D6.D2.3D.3D5.
3D.3D2.D6.3D.3D.3D5.3D.3D2.D6.3D.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D.3D
6.D2.3D.3D5.3D.3D5.3D.3D.3D5.3D.3D2.D6.3D.3D.3D6.D2.3D.3D5.3D.3D5.
3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D.D.D5.3D2.D2.3D5.
3D.3D6.D2.3D.D.D5.3D2.D2.3D5.3D.3D5.3D.3D.3D5.3D.3D5.3D.3D6.D2.3D.
3D6.D2.3D.3D5.3D.3D2.D6.3D.3D.3D5.3D.3D2.D7.D2.3D.3D6.D2.3D.3D5.3D
.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D5.
3D.3D5.3D.3D.3D6.D2.3D.3D5.3D.3D.3D5.3D.3D.D.D5.3D.D.D2.D7.D2.3D.
3D5.3D.3D5.3D.3D5.3D.3D5.3D.D.D6.D2.3D2.D6.3D.3D5.3D.3D.3D5.3D.3D
6.D2.3D2.D6.3D.3D2.D7.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.
3D.D.D5.3D.3D6.D2.3D.3D5.3D.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D6.D2.
3D.3D5.3D.3D.3D5.3D.D.D2.D7.D2.3D.3D6.D2.3D.D.D5.3D.3D6.D3.D2.3D5.
3D.3D5.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D.D.D6.D2.3D.3D5.D.D.3D.3D6.D2.
3D.D.D5.3D2.D2.3D5.3D.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D.3D6.
D2.3D.D.D6.D2.3D.3D5.D.D.3D.3D6.D2.3D.D.D5.3D2.D2.3D5.3D.3D.3D5.3D
.3D6.D2.3D2.D6.3D.3D2.D6.3D.3D.3D6.D2.D.D.3D6.D2.3D.3D6.D2.3D.3D6.
D2.3D.3D5.3D.3D.3D6.D2.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D6.D3.D2.3D
6.D2.3D.3D6.D3.D2.3D6.D2.3D.3D6.D2.3D2.D6.3D.3D5.3D.3D.3D5.3D.3D.
3D5.3D.3D5.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D
2.3D.D.D6.D2.D.D.3D5.3D.3D5.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D2.D7.D2.
3D.3D6.D3.D2.3D5.3D.3D5.3D.3D5.3D.3D.3D6.D2.3D2.D7.D2.3D.3D6.D2.3D
.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D5.3D.3D5.3D2.D2.
3D6.D2.3D.3D5.3D.D.D.3D6.D2.3D2.D6.3D.3D.3D5.3D2.D6.D.D.3D.3D5.3D.
3D5.3D.3D.3D6.D3.D2.3D6.D2.3D.3D5.3D.3D.3D5.3D.3D.D.D6.D2.3D.3D6.D
2.3D.3D5.3D.3D.D.D5.3D.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D2.D7.D2.3D.
3D5.3D.3D6.D2.3D2.D7.D2.3D.3D5.3D.3D2.D7.D2.3D.3D6.D2.D.D.3D6.D2.
3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.D.D.3D5.3D.3D2.D6.3D.3D6.D2.3D.D.D6.
D3.D2.3D5.3D.3D5.3D.3D.3D6.D2.D.D.3D5.3D.3D5.3D.3D6.D2.3D.3D6.D2.
3D.3D5.3D.3D6.D2.3D.3D5.3D.D.D6.D2.3D.3D5.3D.D.D5.3D.3D5.3D.3D5.3D
.3D5.3D.3D6.D2.3D.D.D6.D2.3D.3D$316.DA4.2D2.D.D.D.D7.D3.D.D.D5.2D
4.D.D.D5.2D2.D.D3.D5.D.D.D7.2D2.D.D.D9.D.2D2.D.D5.2D2.D.D3.D5.D.D.
D.D5.2D2.D.D3.D7.D.D.D.2D8.D3.D3.D7.D.D.D.2D8.D.D.D.D7.2D2.D.D3.D
5.D.D.D.D5.2D2.D.D3.D5.2D2.D.D3.D5.D.D.D.D7.D.D.D.D.D7.D.D.D.2D8.D
.D.D3.D5.2D2.D.D3.D5.D.D.D.D5.D.D.D7.2D2.D.D3.D5.2D2.D3.D.D5.2D4.D
3.D5.D.D.D7.2D2.D.D.D.D7.D.2D4.D5.D.D.D7.2D4.D.D.D7.D.2D4.D5.D.D.D
9.D.D5.D5.D.D3.D5.D.D.D.D5.2D2.D5.D5.2D2.D5.D7.D.D.D.2D8.D.D.D3.D
7.D.D.D.2D6.2D4.D.D7.2D2.D.D.D9.D3.D3.D5.D.D.D.D5.2D4.D3.D5.2D4.D.
D7.2D2.D3.D7.2D4.D3.D5.2D2.D.D.D.D5.D.D3.D7.D.D.D.D7.2D4.D.D.D7.D
3.D.D.D7.D.D.D.D.D7.D.D.D.2D6.2D4.D.D7.D.D.D.D5.D.D3.D5.D.D3.D5.D.
D.D.D5.2D4.D.2D6.D.D.D9.D3.D.D7.D.D3.D5.2D4.D.2D8.D.D3.2D6.2D2.D.D
.D7.2D2.D.D.D.D5.2D2.D.D3.D5.2D2.D.D.D9.D3.D.D.D5.D.D3.D5.2D4.D3.D
7.D.D.D.D.D5.2D2.D3.D7.2D4.D.D.D5.D.D.D.D5.2D4.D3.D7.D3.D.D.D7.D.D
.D.2D6.2D2.D.D.D7.2D2.D.D.D.D5.D.D.D7.2D2.2D4.D5.D.D.D7.D.D.D7.D.D
.D7.2D2.D.D.D7.2D2.D.D.D.D5.2D4.D.D.D5.D.D.D.D.D.D5.2D2.D3.D.D7.D.
2D2.D.D5.D5.D.D.D5.2D4.D.D7.2D2.D3.D7.D.D3.D5.2D2.D.D3.D5.2D2.D.D.
D.D5.2D4.D.D.D5.D.D.D.D.D.D5.2D2.D3.D.D7.D.2D2.D.D7.D.D.D3.D5.D.D
3.D5.2D4.D.2D8.D.D3.2D8.D3.D.D7.2D2.D.D3.D5.2D4.D.D.D5.2D4.D.D.D5.
2D4.D.D.D7.D3.D3.D5.2D4.D.D.D7.D3.D.D.D5.D.D.D.D.D7.D.D.D7.2D2.2D
4.D5.2D2.D3.D.D5.2D2.2D4.D5.2D2.D.D3.D5.2D4.D.2D6.D.D.D.D7.D.D5.D
7.D.D3.D7.D.D.D.D5.D.D.D.D5.D.D3.D5.2D2.D.D.D.D5.2D2.D.D.D.D5.2D4.
D3.D5.2D2.D3.D.D5.2D2.D.D.D.D5.2D2.D.D3.D5.D.D.D7.D.D3.D5.2D4.D.D.
D5.D.D3.D5.2D2.D3.2D6.2D4.D3.D5.2D2.2D2.D7.D.D.D.D5.D.D3.D7.D.D.D.
D.D5.2D2.D.D.2D6.2D4.D.D.D5.2D2.D.D3.D5.2D2.D.D.D.D5.2D2.D3.D.D5.
2D4.D.D.D5.2D2.D.D.D7.D.D.D.D5.D.D3.D7.D.2D2.D.D5.2D2.D.D.D.D7.D.D
.D.D.D5.2D2.D3.2D8.D.D.D.D.D5.D.D.2D6.D.D3.D3.D5.D.D.D9.D.D.D.D7.
2D2.2D4.D5.2D2.D.D.D9.D3.D.D.D7.D3.D.D.D5.2D4.D3.D5.2D2.D3.D.D7.D.
D.D.D.D7.D3.D3.D5.2D2.D.D.D.D5.2D2.D3.D.D5.2D2.D3.2D6.2D2.D.D3.D5.
D.D.D.D5.2D2.D3.2D6.2D2.D3.D.D7.D3.D.2D6.2D2.D.D3.D5.2D2.D.D3.D5.
2D2.D5.D5.2D4.D3.D5.2D4.D.D7.2D2.D.D.D.D7.D.D.D.2D6.D.D3.D5.2D4.D.
D.D5.2D2.2D4.D5.D.D.D9.D.D.D3.D5.2D2.D.D3.D5.D.D.D7.D.D.D7.2D4.D3.
D5.2D4.D.D.D5.D.D.D7.2D2.D.D.D7.D.D.D.D5.2D2.D5.D5.D.D.D.D5.D.D.D
7.D.D.D7.D.D.D7.D.D3.D5.2D4.D.D.D5.2D4.D.D.D$316.EA5.D2.3D.D.D5.3D
.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.3D6.D2.D.D.3D5.3D2.D2.3D6.D2.D.D.3D
5.3D.D.D6.D2.3D.3D5.3D.D.D2.D6.3D.3D.3D5.3D.D.D2.D6.3D.3D.3D6.D2.D
.D.3D5.3D.D.D6.D2.3D.3D6.D2.D.D.3D5.3D.D.D5.3D.D.D.3D5.3D.D.D2.D6.
3D.D.D3.D6.D2.D.D.3D5.3D.D.D5.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D
5.3D.3D6.D2.D.D.3D5.3D2.D2.3D5.3D.3D6.D2.3D.3D5.3D2.D2.3D5.3D.3D5.
3D.3D.3D5.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D3.D5.3D.D.D2.D6.3D.3D3.D5.
3D.D.D2.D7.D4.D.3D6.D2.D.D.3D5.3D.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D.3D
6.D2.3D.3D6.D2.3D.3D6.D2.D.D.D.D5.3D.3D5.3D.3D.3D6.D2.3D.D.D5.3D.
3D.D.D5.3D.D.D.3D5.3D.3D2.D7.D2.3D.3D5.3D.D.D5.3D.3D5.3D.3D5.3D.3D
6.D2.3D2.D6.3D.3D5.3D.3D.3D5.3D.3D6.D2.3D2.D6.3D.3D2.D7.D2.3D.3D6.
D2.3D.D.D6.D2.D.D3.D6.D2.D.D.3D5.3D.3D.3D5.3D.3D6.D2.3D3.D5.3D.D.D
.3D6.D2.3D.3D6.D2.3D.3D5.3D.D.D6.D2.3D3.D5.3D.3D.D.D5.3D.3D2.D7.D
2.D.D.3D6.D2.D.D.3D5.3D.3D6.D3.D2.3D5.3D.3D5.3D.3D5.3D.3D6.D2.3D.
3D6.D2.3D.3D6.D2.3D.3D5.3D.3D.D.D6.D2.3D.3D5.3D2.D2.3D5.3D.3D.3D6.
D2.3D.3D6.D2.3D.3D5.3D.3D6.D2.3D3.D6.D2.3D.3D6.D2.3D.3D5.3D.3D.D.D
6.D2.3D.3D5.3D2.D2.3D5.3D.3D3.D5.3D.3D6.D2.3D2.D6.3D.3D2.D6.3D.3D.
3D6.D2.3D.3D6.D4.D.D.D6.D2.3D.D.D6.D2.3D.3D5.3D.3D.3D6.D4.D.3D5.3D
.3D.D.D5.3D.3D.3D5.3D.3D6.D3.D2.3D6.D2.3D.3D6.D3.D2.3D6.D2.3D.3D6.
D2.3D2.D6.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D5.3D.3D5.3D3.D6.D2.3D.3D
6.D2.3D.3D6.D2.3D.3D6.D2.3D.3D6.D2.D.D.3D6.D2.3D.3D5.3D.3D5.3D.3D
6.D2.3D.3D5.3D.3D6.D2.3D2.D7.D2.3D3.D6.D3.D2.3D5.3D.D.D5.3D.3D5.3D
.D.D.3D6.D2.D.D2.D7.D2.3D.3D6.D2.D.D3.D6.D2.3D.D.D6.D2.3D.D.D6.D2.
3D.3D6.D2.D.D.3D5.3D.D.D5.3D3.D5.3D2.D2.3D6.D2.3D.D.D5.3D.3D.D.D6.
D2.3D2.D6.3D.D.D.D.D5.3D2.D6.3D.3D.3D5.3D.3D5.3D.D.D.3D6.D3.D4.D6.
D2.3D.3D5.3D.3D.D.D5.3D.3D.3D6.D2.3D.3D6.D2.3D.3D5.3D.D.D.3D5.3D.
3D.3D6.D2.D.D.D.D6.D2.3D.3D6.D2.3D2.D7.D2.D.D.3D5.3D.3D6.D2.3D2.D
7.D2.3D.D.D5.3D3.D2.D7.D2.3D3.D6.D2.3D3.D6.D2.3D.3D6.D2.3D3.D6.D4.
D.3D6.D2.3D.D.D5.3D.3D2.D6.3D.3D6.D2.3D.3D6.D3.D2.3D5.3D.3D5.3D.D.
D.3D6.D2.3D3.D5.3D.3D5.3D.3D6.D2.3D.3D6.D2.3D.D.D5.3D.3D6.D2.3D.3D
5.3D.3D6.D2.3D.3D5.3D.3D5.3D.3D5.3D.3D5.3D.3D5.3D3.D6.D4.D.3D6.D2.
3D.3D$315.DA.A4.D4.D.D.D5.D3.D5.D6.D4.D.D.D6.D4.D3.D7.D3.D6.D2.D.D
3.D7.D2.D4.D6.D2.D.D.D9.D.D.D6.D4.D.D7.D3.D.D2.D6.D3.D5.D5.D3.D.D
2.D6.D5.D3.D6.D2.D.D.D9.D.D.D6.D4.D.D8.D2.D.D.D9.D.D.D5.D3.D.D.D.D
5.D3.D.D2.D6.D3.D.D2.D7.D2.D.D.D9.D.D.D7.D3.D6.D4.D3.D6.D4.D3.D6.D
2.D3.D9.D3.D6.D2.D.D3.D5.D4.D2.D9.D.D.D6.D2.D5.D5.D4.D2.D9.D.D.D5.
D5.D.D9.D3.D7.D3.D6.D4.D3.D6.D2.D.D2.D6.D3.D.D2.D6.D3.D.D2.D6.D3.D
.D2.D7.D3.D4.D6.D2.D.D3.D5.D5.D3.D7.D.D.D6.D4.D.D8.D2.D3.D.D6.D4.D
.D.D6.D2.D5.D6.D2.D.D.D.D7.D.D7.D5.D3.D6.D4.D.D.D5.D3.D3.D.D5.D3.D
.D3.D5.D5.D2.D7.D4.D3.D7.D.D.D7.D3.D7.D.D9.D3.D6.D2.D4.D8.D3.D5.D
5.D.D.D7.D3.D6.D4.D2.D6.D5.D2.D7.D2.D.D3.D6.D4.D.D.D6.D2.D.D2.D7.D
2.D.D3.D5.D5.D3.D7.D.D8.D4.D2.D6.D3.D.D.D.D6.D4.D.D.D6.D2.D5.D7.D.
D.D6.D4.D2.D6.D5.D.D.D5.D5.D2.D7.D2.D.D3.D6.D2.D.D3.D7.D.D.D6.D3.D
2.D9.D3.D7.D.D.D7.D.D.D6.D2.D.D3.D6.D4.D3.D6.D4.D.D.D7.D3.D.D.D6.D
2.D.D3.D5.D4.D2.D.D7.D.D3.D.D6.D4.D.D.D6.D2.D.D3.D7.D.D8.D2.D.D2.D
7.D4.D3.D6.D4.D.D.D7.D3.D.D.D6.D2.D.D3.D5.D4.D2.D.D5.D3.D.D2.D8.D
3.D6.D4.D2.D6.D5.D2.D6.D5.D.D.D6.D4.D.D8.D3.D2.D.D6.D2.D3.D.D6.D2.
D5.D5.D5.D.D8.D3.D2.D.D5.D3.D3.D.D5.D.D.D.D.D.D7.D.D.D6.D3.D4.D6.D
2.D.D3.D6.D3.D2.D8.D2.D.D3.D6.D2.D4.D8.D3.D5.D5.D3.D5.D5.D3.D7.D3.
D7.D3.D7.D2.D7.D2.D.D3.D6.D2.D.D.D.D6.D4.D.D8.D2.D.D3.D6.D2.D.D3.D
6.D4.D.D9.D3.D7.D3.D6.D2.D5.D7.D3.D6.D4.D2.D7.D4.D2.D7.D3.D2.D.D7.
D.D.D7.D.D7.D3.D.D3.D6.D2.D.D2.D7.D2.D3.D.D6.D2.D.D2.D7.D2.D.D.D.D
6.D4.D.D.D6.D4.D.D.D6.D2.D.D3.D7.D.D.D7.D2.D6.D4.D4.D6.D4.D.D.D5.D
5.D.D.D6.D4.D2.D6.D3.D.D.D.D7.D2.D8.D3.D.D9.D3.D5.D3.D.D3.D6.D3.D
3.D7.D4.D.D.D5.D3.D3.D.D5.D3.D5.D6.D2.D5.D6.D2.D.D3.D5.D3.D.D3.D7.
D.D3.D8.D2.D.D.D.D6.D4.D3.D6.D4.D2.D7.D2.D.D3.D7.D3.D6.D2.D.D2.D7.
D4.D.D.D5.D4.D3.D7.D4.D2.D7.D4.D2.D7.D2.D.D.D8.D2.D4.D7.D3.D2.D.D
6.D4.D.D.D5.D3.D.D2.D8.D.D8.D4.D3.D6.D3.D2.D9.D.D.D5.D3.D.D.D8.D4.
D2.D8.D.D.D7.D3.D6.D4.D.D8.D2.D3.D.D7.D3.D6.D4.D.D.D7.D3.D6.D4.D.D
9.D3.D7.D.D.D7.D.D.D7.D.D.D7.D2.D7.D3.D4.D6.D4.D.D.D$315.D6.3D3.D.
3D5.3D.3D3.D5.3D.3D.3D5.3D3.D.3D5.3D.2D6.3D.3D.2D6.3D.3D.3D5.3D.3D
.3D5.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.2D6.3D.
3D.3D5.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D
2.D6.3D.3D.3D5.3D.3D5.3D.2D6.3D.3D.3D5.3D.2D2.3D5.3D.3D.3D5.3D.2D
6.3D.3D3.D5.3D.3D.3D5.3D.3D5.3D.3D3.D5.3D.3D.3D5.3D.3D5.3D.2D2.3D
5.3D.3D5.3D.3D5.3D.2D2.3D5.3D.3D2.D6.3D.3D.3D5.3D.3D2.D6.3D.3D.3D
5.3D2.D2.2D6.3D.3D.2D6.3D.3D.3D5.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.2D
2.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D5.3D.3D.2D6.3D.3D.3D5.3D.3D.3D5.3D.
3D3.D5.3D3.D.3D5.3D.3D.2D6.3D.3D5.3D.3D5.3D.3D5.3D3.D5.3D.3D.3D5.
3D.2D6.3D.3D.3D5.3D.3D5.3D.3D.3D5.3D.2D2.3D5.3D.3D.2D6.3D.3D.3D5.
3D.3D2.D6.3D.3D.2D6.3D.3D3.D5.3D.3D5.3D.3D2.D6.3D.3D.3D5.3D.2D2.3D
5.3D.3D.3D5.3D.3D5.3D.3D2.D6.3D.3D.3D5.3D3.D.3D5.3D.3D.2D6.3D.3D3.
D5.3D.3D5.3D.3D.3D5.3D.2D6.3D.3D5.3D.3D5.3D.3D.2D6.3D.3D3.D5.3D.3D
.3D7.D.3D.3D5.3D.3D3.D5.3D.3D.3D5.2D2.3D.3D5.3D.3D.3D5.3D.3D.2D6.
3D.3D5.3D.3D2.D6.3D.3D3.D5.3D.3D.3D7.D.3D.3D5.3D.3D3.D5.3D.3D.3D5.
3D.3D2.D6.3D.3D5.3D.3D.3D5.3D.2D2.3D5.3D.3D.3D5.3D3.D.3D5.3D2.D2.
3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D2.D2.3D5.3D.3D.3D5.3D.3D.3D5.
3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D.3D5.3D.3D5.3D
.2D2.3D5.3D.2D2.2D6.3D.3D5.3D.3D5.3D2.D6.3D.3D.3D5.3D.3D.3D5.3D.3D
.3D5.3D.3D.3D5.3D.3D3.D5.3D3.D.3D5.3D.2D6.3D.3D5.3D.3D.3D5.3D.3D5.
3D.2D2.3D5.3D.3D2.D6.3D.3D.3D5.3D.3D5.3D.3D5.3D.3D.3D5.3D.3D.3D5.
3D.3D.3D5.3D.3D2.D6.3D.3D.3D5.3D.2D2.3D5.3D.3D.3D5.3D.3D.2D6.3D.3D
5.3D2.D6.3D.3D.3D5.3D.3D.3D5.3D3.D.3D5.3D.2D2.3D5.3D.3D.3D5.3D.3D
7.D.3D.3D5.3D.2D6.3D.3D.2D6.3D.3D2.D6.3D.3D.3D5.3D.3D.3D5.3D.3D3.D
5.3D.3D.3D5.3D.3D.3D5.3D.3D3.D5.3D.3D.3D5.3D.3D.3D5.3D.2D2.3D5.3D.
2D2.3D5.3D.3D.3D5.3D.3D5.3D.3D.3D5.3D.2D2.3D5.3D2.D2.3D5.3D.3D2.D
6.3D3.D2.D6.3D.3D.3D5.3D.3D2.D6.3D2.D2.3D5.3D3.D.3D5.3D.3D.3D5.3D.
3D5.3D.3D3.D5.3D.3D.3D5.3D.3D5.3D.3D.3D5.3D3.D2.D6.3D.3D5.3D.2D6.
3D.3D.3D5.3D.3D.3D5.3D.2D6.3D.3D.3D5.3D3.D5.3D.2D2.3D5.3D3.D5.3D.
3D5.3D.3D5.3D.3D5.3D2.D6.3D2.D4.D5.3D.3D.3D32$352.A$351.2A$351.A.A
54$408.A$407.2A$407.A.A33$442.2A$441.2A$443.A34$477.3A$477.A$478.A
21$502.A$501.2A$501.A.A25$527.3A$527.A$528.A77$608.A$607.2A$607.A.
A24$633.2A$632.2A$634.A20$656.A$655.2A$655.A.A46$704.A$703.2A$703.
A.A49$753.3A$753.A$754.A53$810.A$809.2A$809.A.A49$859.3A$859.A$
860.A71$934.A$933.2A$933.A.A24$959.2A$958.2A$960.A20$982.A$981.2A$
981.A.A46$1030.A$1029.2A$1029.A.A24$1055.2A$1054.2A$1056.A20$1078.
A$1077.2A$1077.A.A50$1130.A$1129.2A$1129.A.A49$1179.3A$1179.A$
1180.A49$1232.A$1231.2A$1231.A.A24$1257.2A$1256.2A$1258.A20$1280.A
$1279.2A$1279.A.A22$1303.2A$1303.A.A$1303.A46$1352.A$1351.2A$1351.
A.A38$1391.2A$1391.A.A$1391.A29$1421.3A$1421.A$1422.A21$1446.A$
1445.2A$1445.A.A24$1472.A$1471.2A$1471.A.A51$1525.A$1524.2A$1524.A
.A22$1549.A$1548.2A$1548.A.A29$1580.A$1579.2A$1579.A.A51$1633.A$
1632.2A$1632.A.A22$1657.A$1656.2A$1656.A.A61$1720.A$1719.2A$1719.A
.A22$1742.3A$1742.A$1743.A22$1768.A$1767.2A$1767.A.A37$1805.3A$
1805.A$1806.A39$1848.A$1847.2A$1847.A.A49$1897.3A$1897.A$1898.A69$
1970.A$1969.2A$1969.A.A49$2019.3A$2019.A$2020.A41$2064.A$2063.2A$
2063.A.A25$2089.3A$2089.A$2090.A56$2148.2A$2147.2A$2149.A22$2173.A
$2172.2A$2172.A.A31$2206.A$2205.2A$2205.A.A30$2237.2A$2236.2A$
2238.A37$2276.2A$2275.2A$2277.A29$2306.3A$2306.A$2307.A23$2331.3A$
2331.A$2332.A21$2354.3A$2354.A$2355.A71$2429.A$2428.2A$2428.A.A31$
2461.2A$2460.2A$2462.A53$2516.2A$2515.2A$2517.A49$2567.2A$2566.2A$
2568.A58$2627.2A$2627.A.A$2627.A32$2661.2A$2660.2A$2662.A20$2684.A
$2683.2A$2683.A.A22$2706.3A$2706.A$2707.A21$2729.3A$2729.A$2730.A
21$2753.2A$2753.A.A$2753.A28$2784.A$2783.2A$2783.A.A22$2807.2A$
2807.A.A$2807.A57$2866.2A$2866.A.A$2866.A21$2890.A$2889.2A$2889.A.
A31$2922.2A$2922.A.A$2922.A61$2985.2A$2984.2A$2986.A44$3031.2A$
3031.A.A$3031.A46$3078.3A$3078.A$3079.A24$3106.A$3105.2A$3105.A.A
25$3131.3A$3131.A$3132.A56$3190.2A$3190.A.A$3190.A21$3213.2A$3213.
A.A$3213.A32$3248.A$3247.2A$3247.A.A50$3300.A$3299.2A$3299.A.A37$
3339.A$3338.2A$3338.A.A31$3370.3A$3370.A$3371.A20$3393.2A$3393.A.A
$3393.A32$3428.A$3427.2A$3427.A.A56$3485.2A$3484.2A$3486.A58$3545.
2A$3545.A.A$3545.A24$3572.A$3571.2A$3571.A.A24$3598.A$3597.2A$
3597.A.A22$3622.A$3621.2A$3621.A.A26$3650.A$3649.2A$3649.A.A22$
3673.2A$3673.A.A$3673.A22$3697.2A$3697.A.A$3697.A22$3721.2A$3721.A
.A$3721.A44$3768.A$3767.2A$3767.A.A47$3816.2A$3815.2A$3817.A32$
3851.A$3850.2A$3850.A.A121$3973.2A$3972.2A$3974.A39$4014.2A$4013.
2A$4015.A52$4069.A$4068.2A$4068.A.A130$4201.A$4200.2A$4200.A.A32$
4235.A$4234.2A$4234.A.A40$4275.3A$4275.A$4276.A21$4298.3A$4298.A$
4299.A44$4346.A$4345.2A$4345.A.A47$4394.2A$4393.2A$4395.A32$4429.A
$4428.2A$4428.A.A121$4551.2A$4550.2A$4552.A39$4592.2A$4591.2A$
4593.A52$4647.A$4646.2A$4646.A.A70$4718.2A$4718.A.A$4718.A21$4742.
A$4741.2A$4741.A.A31$4774.2A$4774.A.A$4774.A61$4837.2A$4836.2A$
4838.A57$4896.2A$4895.2A$4897.A33$4932.A$4931.2A$4931.A.A41$4974.
2A$4973.2A$4975.A28$5004.2A$5003.2A$5005.A30$5036.2A$5036.A.A$
5036.A56$5094.2A$5094.A.A$5094.A43$5138.3A$5138.A$5139.A53$5193.3A
$5193.A$5194.A219$5415.2A$5415.A.A$5415.A22$5439.2A$5439.A.A$5439.
A26$5468.A$5467.2A$5467.A.A41$5509.3A$5509.A$5510.A26$5537.3A$
5537.A$5538.A43$5584.A$5583.2A$5583.A.A29$5613.3A$5613.A$5614.A22$
5639.A$5638.2A$5638.A.A62$5701.3A$5701.A$5702.A61$5766.A$5765.2A$
5765.A.A23$5790.2A$5790.A.A$5790.A23$5815.2A$5814.2A$5816.A22$
5839.2A$5839.A.A$5839.A45$5887.A$5886.2A$5886.A.A45$5934.A$5933.2A
$5933.A.A31$5967.A$5966.2A$5966.A.A41$6008.3A$6008.A$6009.A24$
6034.3A$6034.A$6035.A33$6070.2A$6070.A.A$6070.A22$6094.2A$6093.2A$
6095.A21$6117.2A$6117.A.A$6117.A30$6150.A$6149.2A$6149.A.A22$6172.
3A$6172.A$6173.A35$6211.A$6210.2A$6210.A.A33$6244.3A$6244.A$6245.A
27$6273.3A$6273.A$6274.A20$6296.2A$6296.A.A$6296.A21$6319.2A$6319.
A.A$6319.A50$6372.A$6371.2A$6371.A.A24$6396.3A$6396.A$6397.A30$
6428.3A$6428.A$6429.A24$6456.A$6455.2A$6455.A.A43$6501.A$6500.2A$
6500.A.A36$6538.2A$6537.2A$6539.A32$6573.A$6572.2A$6572.A.A25$
6598.3A$6598.A$6599.A20$6621.2A$6621.A.A$6621.A22$6646.A$6645.2A$
6645.A.A53$6700.2A$6700.A.A$6700.A46$6747.3A$6747.A$6748.A58$6807.
3A$6807.A$6808.A35$6846.A$6845.2A$6845.A.A48$6896.A$6895.2A$6895.A
.A21$6918.2A$6918.A.A$6918.A106$7026.2A$7026.A.A$7026.A22$7050.2A$
7049.2A$7051.A49$7101.2A$7101.A.A$7101.A27$7131.A$7130.2A$7130.A.A
47$7180.A$7179.2A$7179.A.A53$7235.A$7234.2A$7234.A.A54$7291.A$
7290.2A$7290.A.A29$7321.2A$7321.A.A$7321.A40$7364.A$7363.2A$7363.A
.A49$7415.A$7414.2A$7414.A.A79$7495.2A$7494.2A$7496.A23$7520.2A$
7519.2A$7521.A38$7559.3A$7559.A$7560.A35$7598.A$7597.2A$7597.A.A
24$7623.2A$7623.A.A$7623.A23$7648.2A$7647.2A$7649.A38$7688.2A$
7688.A.A$7688.A36$7725.3A$7725.A$7726.A65$7794.A$7793.2A$7793.A.A
48$7842.3A$7842.A$7843.A34$7880.A$7879.2A$7879.A.A39$7920.2A$7919.
2A$7921.A30$7951.3A$7951.A$7952.A42$7995.3A$7995.A$7996.A33$8030.
3A$8030.A$8031.A68$8101.2A$8100.2A$8102.A21$8124.2A$8123.2A$8125.A
31$8158.A$8157.2A$8157.A.A26$8186.A$8185.2A$8185.A.A22$8210.A$
8209.2A$8209.A.A49$8260.2A$8259.2A$8261.A35$8296.3A$8296.A$8297.A
22$8320.3A$8320.A$8321.A21$8345.A$8344.2A$8344.A.A31$8378.A$8377.
2A$8377.A.A28$8408.A$8407.2A$8407.A.A22$8431.2A$8431.A.A$8431.A47$
8480.2A$8480.A.A$8480.A22$8503.3A$8503.A$8504.A36$8541.3A$8541.A$
8542.A21$8565.2A$8565.A.A$8565.A22$8589.2A$8589.A.A$8589.A22$8613.
2A$8613.A.A$8613.A22$8637.2A$8637.A.A$8637.A22$8662.A$8661.2A$
8661.A.A42$8705.2A$8704.2A$8706.A32$8740.A$8739.2A$8739.A.A!
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

russellsprouts wrote: May 28th, 2026, 4:37 pm Right, once the crab seed is launched you'll want to send the slow salvo gliders right behind it, so it makes the most sense to build it at a 90 degree angle.

Since the depth we build the crab stretcher is not too important, I do think we could make the crab stretcher cheaper by building it close to the construction lane, where we can use direct creation recipes instead of just slow salvo gliders. For example, the HNE16T14-based merge circuit normally takes ~150 slow gliders to build, but I was able to build it around the recipe stream using only ~200 fast gliders.
Yep, I am betting on you to invent it, but be carefull not to start wicks too close the input lane as we need some space to be able to use the OGGCA to send gliders to do the constructions. I have not looked at the in-envelope alchemy yet. This crab creation step could be replaced later by optimalized version. I am trying to "put all the puzzle pieces as close to required positions as possible" to see the whole picture contours. We need to estimate the order of magnitude of the construction to choose the number of required semisnarks in central clock logic. The chosen recipe for the crabstretcher would not affect te estimate too much. Fortunately the cell scaling would otherwise just increase distances among the 18 islands, but except the allocation the salvas should remain unchanged ... so this sketching will not be thrown away ... .
It could happen we would require much more than 2^K long DNA without a chance to shorten it under 2^K so there will be no request to do "perfectionist optimization". And we would use just a part of 2^{K+1}, so no need to share state reading with recipes ... giving us easily "readable DNA".
In the case we would be close to 2^K we could still finish the 2^{K+1} version, but try to do the optimization to get bellow 2^K for "a lot of costs".
... it could be helpfull to know where are the reserves and how far could the limits be.

... one such place is the long move (including middle move) optimization (what could have more general use ... even when I do not know other request for it than the 0e0p metacell), another is the (partially) in-envelope crab doublestretcher (again with more general use).
User avatar
Hippo.69
Posts: 674
Joined: July 14th, 2020, 7:35 pm
Contact:

Re: 0E0P constructions

Post by Hippo.69 »

Has anybody proposal for better "input blocking seed"?
I do not like the number of (yellow) clusters I had to add.

Code: Select all

x = 538, y = 575, rule = LifeHistory14
75.I.I$76.2I$76.I34$519.K$519.K$519.K6$531.2J$531.J.J$532.2J.3I198$
321.3I11$311.I$310.I.I$310.2I19$305.I$304.I.I$305.I.I$306.2I$311.I$
310.I.I$310.I.I$311.I37$240.3I$245.I$245.I$245.I3$253.K$236.3I.J11.K.
K$240.J12.K$240.J14$222.K$221.K.K$222.K11.3K105$135.D$135.D.D$135.2D
2$119.J$117.3J5.2I$116.J8.2I$116.2J$107.2K5.3E$107.2K7.E$115.E$128.2I
$127.I.I$128.I2$120.2I$120.2I106$2I$.2I$I!
russellsprouts wrote: May 28th, 2026, 4:37 pm
This is definitely pattern to consider building "in envelope" with simkin OGGCA (with simkin glider lane shifted SE).
(Just before the OGGCA in near proximity will be destroyed ... and construction would continue on EEEE after building the seed)

Two splitters and ott0 could be relatively shifted along the input lane….

The salvas (ignoring setting the origin) took 648;631;524;7;486;136;808;711;722;808 slow gliders. Multiplying by estimate 500 per glider we got 2 740 500 ticks. DNA length in ticks is roughly 24q, with DNA length in ticks 2^{24} this is roughly 4q.
It could happen we would manage to do it during the 6q planned time for this 2^{24}. I bet the oriented construction is at least twice as complicated so we are close to 18q.
I have not count the gliders doing the allocation stuff, but we still have 6q reserve in the estimate.
2^{23} does not look realistic and 2^{25} seems must be enough. I would try 2^{24} untill I found the estimates are too low.

Considering NEEE:

Code: Select all

x = 8935, y = 8671, rule = B3/S23
2o$2o7$3b3o$3bo$4bo10$16b3o$16bo$17bo25$33bo$32b2o$32bobo5$46b3o$46bo$
47bo5$46b3o$46bo$47bo12$50b3o$50bo$51bo7b3o$59bo$60bo3$66bo16b3o$65b2o
7b3o6bo$65bobo6bo9bo$75bo8$106bo$105b2o$105bobo5$108b3o$108bo$109bo13$
122b3o$122bo$123bo15$139bo$138b2o$138bobo3$141b3o$141bo9bo$142bo7b2o$
150bobo33$184b3o$184bo$185bo13$215bo15bo$214b2o14b2o$214bobo13bobo3$
220b3o$220bo$221bo3$242bo$241b2o$241bobo12$271bo$270b2o$270bobo4$276bo
$275b2o$275bobo9$288b3o$288bo$289bo2$275b3o$275bo$276bo27b3o$304bo$
305bo22$315b3o$315bo9b3o$316bo8bo$326bo10$336b3o$336bo$337bo11$365bo$
364b2o$364bobo10$359bo$358b2o$358bobo11$372b3o$372bo$373bo6$396b3o$
396bo$397bo5$395bo$394b2o$394bobo7$397b3o$397bo$398bo15$404b3o$404bo$
405bo8$418b3o$418bo$419bo8$432b3o$432bo$433bo14$440b3o$440bo$441bo5b3o
$447bo$448bo$461bo$460b2o$460bobo18$466bo$465b2o$465bobo2$470bo$469b2o
$469bobo12$465b3o$465bo$466bo14$474b3o$474bo$475bo12b3o$488bo$489bo2$
478b3o$478bo$479bo$498bo$497b2o$497bobo7$498b3o$498bo$499bo16$502b3o$
502bo$503bo14$510b3o14b3o$510bo16bo$511bo16bo4$514b3o$514bo$515bo$527b
o$526b2o$526bobo33$565b3o$565bo$566bo3$570bo$569b2o$569bobo19$581b3o$
581bo$582bo9$614bo$613b2o$613bobo$619b3o$619bo$620bo2$599b3o23b3o$599b
o25bo$600bo25bo12$636b3o$636bo$637bo8$648b3o$648bo$649bo14$656b3o$656b
o$657bo3b3o$661bo$662bo12$682b3o$682bo$665b3o15bo$665bo$666bo3b3o14b3o
$670bo16bo$671bo16bo18$689b3o$689bo$690bo16$724bo$723b2o$723bobo12$
734bo$733b2o$733bobo5$752b3o$752bo$753bo9$758bo23bo11b3o$757b2o22b2o
11bo$757bobo21bobo11bo3$770b3o$770bo$771bo2$758b3o$758bo$759bo6$811bo$
810b2o$810bobo5$810b3o$810bo7bo$811bo5b2o$817bobo56$864bo$863b2o$863bo
bo7$861b3o$861bo$862bo11$880bo$879b2o$879bobo10$877bo$876b2o4b3o$876bo
bo3bo$883bo11$902bo$901b2o$901bobo2$906bo$905b2o$905bobo38$922b3o$922b
o$923bo18$908b3o$908bo$909bo14$916b3o$916bo$917bo2$929b3o$929bo$920b3o
7bo$920bo$921bo8$945b3o$945bo$946bo6$930b3o$930bo$931bo5$972bo$971b2o$
971bobo3bo$960b3o13b2o$960bo15bobo$961bo15$987bo$986b2o$986bobo5$989b
3o$989bo$990bo16$1004b3o$1004bo$1005bo5$1012b3o$1012bo$1013bo2$1037bo$
1036b2o$1036bobo6$1023b3o$1023bo11b3o$1024bo10bo$1036bo8$1048b3o$1048b
o$1049bo4$1056b3o$1056bo$1057bo4$1071b3o$1071bo$1072bo4$1074b3o$1074bo
$1075bo10$1081b3o$1081bo$1082bo6$1092b3o$1092bo$1093bo15$1105bo$1104b
2o$1104bobo5b3o$1112bo$1113bo8$1125b3o$1125bo$1126bo10$1135b3o$1135bo$
1136bo8$1160b3o$1160bo5b3o$1161bo4bo$1148bo18bo$1147b2o$1147bobo4$
1182b3o$1182bo$1183bo8$1178b3o$1178bo$1179bo4$1185b3o$1185bo$1186bo18$
1202b3o$1202bo$1203bo46$1226b3o$1226bo$1227bo10$1237b3o$1237bo$1238bo$
1251bo$1250b2o$1250bobo38$1286b3o$1286bo$1287bo3$1288bo$1287b2o$1287bo
bo4$1291bo$1290b2o$1290bobo10$1296bo25b3o$1295b2o7b3o15bo$1295bobo6bo
18bo$1305bo2$1335b3o$1335bo$1309b3o24bo$1309bo$1310bo6$1348b3o$1348bo$
1349bo4$1365b3o$1365bo$1356b3o7bo$1356bo$1357bo5$1398bo$1397b2o$1397bo
bo2$1370bo$1369b2o$1369bobo30b3o$1402bo$1403bo7$1367b3o$1367bo$1368bo$
1413b3o$1413bo$1414bo$1371b3o$1371bo$1372bo3$1411b3o$1411bo$1412bo5$
1440bo$1439b2o$1439bobo48$1489bo$1488b2o$1488bobo19$1525b3o$1525bo$
1526bo11$1533bo$1532b2o$1532bobo51$1589b3o$1589bo$1590bo10$1601b3o$
1601bo$1602bo16$1629b3o$1621bo7bo$1620b2o8bo$1620bobo23$1661b3o$1661bo
$1662bo6b3o$1669bo$1670bo48$1734b3o$1734bo$1735bo12$1744b3o$1744bo$
1745bo12$1760b3o$1760bo$1752b3o6bo$1752bo$1753bo32$1804b3o$1804bo$
1805bo11$1797bo$1796b2o$1796bobo27$1846b3o$1846bo$1847bo50$1909bo$
1908b2o$1908bobo8$1880b3o$1880bo6bo$1881bo4b2o33bo$1886bobo31b2o$1920b
obo15$1952b3o$1952bo$1953bo2$1941b3o$1941bo$1942bo$1953bo$1952b2o$
1952bobo20$1975bo$1974b2o$1974bobo8$1972bo$1971b2o$1971bobo11$1977b3o$
1977bo$1978bo4$1993b3o$1993bo$1994bo17$2009b3o$2009bo$2010bo8$2022b3o$
2022bo$2023bo7$2037bo$2036b2o$2036bobo11$2063b3o$2063bo$2064bo15b3o$
2080bo$2081bo4$2085b3o3b3o$2085bo5bo$2086bo5bo13$2098bo$2097b2o$2097bo
bo2$2104bo$2103b2o$2103bobo22$2144b3o$2144bo$2145bo12$2159b3o$2159bo$
2160bo22$2184b3o$2184bo$2185bo2$2173b3o$2173bo$2174bo10$2209b3o$2209bo
$2210bo26$2219b3o$2219bo$2220bo4$2241b3o$2241bo$2242bo24$2275b3o$2275b
o$2276bo12$2280b3o$2280bo$2281bo25$2260b3o$2260bo8b3o$2261bo7bo$2270bo
10$2281b3o$2281bo$2282bo17$2304bo$2303b2o$2303bobo18$2333bo$2332b2o$
2332bobo6$2332bo$2331b2o$2331bobo14$2353bo$2352b2o$2352bobo18$2338b3o
8bo$2338bo9b2o$2339bo8bobo$2357b3o$2357bo$2358bo13$2365b3o$2365bo$
2366bo9$2398b3o$2398bo$2399bo3$2373b3o$2373bo$2374bo4$2377b3o$2377bo$
2378bo3$2404b3o$2404bo$2405bo5$2408b3o$2408bo$2409bo7$2408bo$2407b2o$
2407bobo30$2430bo$2429b2o$2429bobo$2437b3o$2437bo$2438bo8$2451b3o$
2451bo$2452bo14$2443b3o$2443bo$2444bo10$2462b3o$2462bo$2463bo2$2451b3o
$2451bo$2452bo13$2453bo$2452b2o$2452bobo14$2475bo$2474b2o13b3o$2474bob
o12bo$2490bo$2497bo$2478b3o15b2o8b3o$2478bo17bobo7bo$2479bo27bo3$2511b
3o$2511bo$2512bo12$2522b3o$2522bo$2523bo$2542bo$2541b2o$2541bobo4$
2558bo$2557b2o$2557bobo27$2579b3o$2579bo$2580bo42$2629b3o$2629bo$2630b
o13$2643b3o$2643bo$2644bo12$2660b3o$2660bo$2661bo10$2657b3o$2657bo$
2658bo4b3o$2663bo$2664bo6$2664b3o$2664bo$2665bo18$2702b3o$2702bo$2703b
o3b3o$2707bo$2708bo14$2699b3o$2699bo$2700bo$2727b3o$2727bo$2728bo10$
2738b3o$2738bo$2739bo11$2748bo$2747b2o$2747bobo$2766b3o$2766bo$2767bo
3$2771bo$2770b2o$2770bobo8$2776bo$2775b2o$2775bobo6$2786bo$2785b2o$
2785bobo40$2824b3o$2824bo$2825bo8$2837b3o$2837bo$2838bo6$2843b3o$2843b
o$2844bo4$2844b3o$2844bo$2845bo5$2852bo$2851b2o$2851bobo50$2914bo$
2913b2o$2913bobo8$2927bo$2926b2o$2926bobo6$2935bo$2934b2o$2934bobo7$
2940b3o$2940bo$2941bo10$2936b3o$2936bo$2937bo8$2935b3o$2935bo$2936bo4$
2945bo$2944b2o$2944bobo10$2953bo$2952b2o$2952bobo2$2962bo$2961b2o$
2961bobo7$2969b3o$2969bo$2970bo2$2959b3o$2959bo16bo$2960bo14b2o$2975bo
bo13$2975b3o$2975bo$2976bo6$2991b3o$2991bo$2992bo8$2989b3o$2989bo$
2990bo4$2998b3o$2998bo$2999bo5$3012bo$3011b2o$3011bobo4bo$3017b2o$
3017bobo$2999b3o$2999bo$3000bo31$3043b3o$3043bo$3044bo14$3052b3o$3052b
o$3053bo10$3046b3o$3046bo$3047bo11$3072bo$3071b2o$3071bobo2$3062bo$
3061b2o$3061bobo5$3073b3o$3073bo$3074bo15$3078bo$3077b2o$3077bobo4$
3095bo$3094b2o$3094bobo22$3109bo$3108b2o$3108bobo14$3119bo$3118b2o$
3118bobo12$3113b3o$3113bo$3114bo10$3123b3o$3123bo$3124bo8$3126b3o4b3o$
3126bo6bo$3127bo6bo49$3158bo$3157b2o5b3o$3157bobo4bo$3165bo22$3206b3o$
3206bo$3207bo8$3205b3o$3205bo$3206bo43$3214bo$3213b2o$3213bobo7$3213b
3o$3213bo$3214bo6$3229b3o$3229bo$3230bo8$3227b3o$3227bo$3228bo6$3227b
3o$3227bo6bo$3228bo4b2o$3233bobo5bo$3240b2o$3240bobo14$3247bo5bo$3246b
2o4b2o$3246bobo3bobo$3272b3o$3272bo$3273bo10$3282b3o$3282bo$3283bo13$
3301bo$3300b2o$3300bobo4bo$3306b2o$3306bobo17$3334b3o$3334bo$3335bo3$
3442b3o$3442bo$3443bo2$3333bo$3332b2o$3332bobo2$3442b3o$3442bo$3350bo
92bo$3349b2o$3349bobo14$3367bo$3366b2o$3366bobo4$3465b3o$3369b3o93bo$
3369bo96bo$3370bo4$3487bo$3486b2o$3486bobo3$3476b3o13b3o$3476bo15bo$
3390bo86bo15bo$3389b2o$3389bobo4$3507b3o4b3o$3507bo6bo$3508bo6bo4$
3517b3o$3517bo$3518bo26$3543b3o$3543bo$3544bo7$3563bo$3542b3o17b2o$
3542bo19bobo5bo$3543bo25b2o$3569bobo8$3566bo$3565b2o$3565bobo11$3572bo
$3571b2o$3571bobo38$3607b3o$3607bo$3608bo3$3609bo$3608b2o$3608bobo4$
3612bo$3611b2o$3611bobo8$3657b3o$3657bo$3617bo40bo$3616b2o7b3o$3616bob
o6bo19b3o$3626bo18bo$3646bo3$3630b3o$3630bo$3631bo3$3668b3o$3668bo$
3669bo5$3692bo$3691b2o$3691bobo4$3696b3o$3696bo$3675bo21bo$3674b2o$
3674bobo6$3709b3o$3709bo$3710bo11$3720bo$3719b2o$3719bobo57$3773bo$
3772b2o$3772bobo2$3777b3o$3777bo$3778bo10$3779bo$3778b2o$3778bobo6$
3779bo$3778b2o$3778bobo3$3782b3o$3782bo$3783bo3$3804b3o$3804bo$3805bo
7$3791b3o$3791bo$3792bo4$3813bo$3812b2o7b3o$3812bobo6bo$3822bo60$3888b
3o$3888bo$3889bo20$3903b3o$3903bo$3904bo30$3935b3o$3935bo$3936bo12$
3946b3o$3946bo$3947bo13$3955bo$3954b2o7b3o$3954bobo6bo$3964bo60$4030b
3o$4030bo$4031bo20$4045b3o$4045bo$4046bo30$4077b3o$4077bo$4078bo12$
4088b3o$4088bo$4089bo13$4097bo$4096b2o7b3o$4096bobo6bo$4106bo60$4172b
3o$4172bo$4173bo20$4187b3o$4187bo$4188bo30$4219b3o$4219bo$4220bo12$
4230b3o$4230bo$4231bo13$4239bo$4238b2o7b3o$4238bobo6bo$4248bo60$4314b
3o$4314bo$4315bo20$4329b3o$4329bo$4330bo24$4364b3o$4364bo$4365bo8$
4377b3o$4377bo$4378bo11$4388bo$4387b2o$4387bobo35$4428b3o$4428bo$4429b
o8$4441b3o$4441bo$4442bo5$4458bo$4457b2o$4457bobo7$4456b3o$4456bo$
4457bo66$4519b3o$4519bo$4520bo12$4540b3o$4540bo$4541bo34$4567b3o$4567b
o$4568bo12$4578b3o$4578bo$4579bo13$4587bo$4586b2o7b3o$4586bobo6bo$
4596bo60$4662b3o$4662bo$4663bo20$4677b3o$4677bo$4678bo30$4709b3o$4709b
o$4710bo10$4729b3o$4729bo$4730bo2$4718b3o$4718bo$4719bo28$4747b3o$
4747bo$4748bo9$4754b3o$4754bo$4755bo12$4765b3o$4765bo$4766bo13$4774bo$
4773b2o$4773bobo14bo$4789b2o$4789bobo3$4777b3o$4777bo$4778bo43$4854bo$
4853b2o$4853bobo50$4904bo$4903b2o$4903bobo30$4942b3o$4942bo$4943bo17$
4962bo$4961b2o$4961bobo$4952b3o$4952bo$4953bo26$4993b3o$4993bo$4994bo
11$5013bo$5012b2o$5012bobo3$5015b3o$5015bo$5016bo35$5047bo$5046b2o$
5046bobo5$5060b3o$5060bo$5061bo8$5082b3o$5082bo$5083bo3b3o$5087bo$
5088bo20$5097b3o$5097bo$5098bo11$5092bo$5091b2o$5091bobo12$5103bo$
5102b2o$5102bobo10$5115bo$5114b2o$5114bobo7$5115b3o$5115bo$5116bo9$
5141bo$5140b2o$5140bobo5$5125b3o$5125bo$5126bo51$5226b3o$5226bo$5227bo
11$5202b3o$5202bo$5203bo4$5242bo$5241b2o5b3o$5241bobo4bo$5249bo13$
5272bo$5263b3o5b2o$5263bo7bobo$5264bo3$5273bo$5272b2o$5272bobo6$5291b
3o$5291bo$5292bo2$5306b3o$5306bo$5307bo2$5310b3o$5310bo$5311bo2$5318b
3o$5318bo$5319bo26$5340b3o$5340bo$5341bo4b3o7b3o$5346bo9bo$5347bo9bo6$
5373b3o$5373bo$5374bo3$5375bo$5374b2o$5374bobo16$5390bo$5389b2o$5389bo
bo8$5396bo7bo$5387b3o5b2o6b2o$5387bo7bobo5bobo$5388bo22$5437b3o$5437bo
$5438bo3$5442b3o$5442bo$5443bo4$5458b3o$5458bo$5459bo23$5471b3o$5471bo
$5472bo10$5484b3o$5484bo$5485bo19$5505bo$5504b2o$5504bobo26$5530bo$
5529b2o$5529bobo13$5536b3o$5536bo$5537bo8$5556b3o$5556bo$5557bo$5564bo
$5563b2o$5563bobo6$5562bo$5561b2o$5561bobo4$5565bo$5564b2o$5564bobo24$
5591bo$5590b2o$5590bobo4$5594b3o$5594bo$5595bo2$5598b3o$5598bo$5599bo
10$5609b3o$5609bo$5610bo17$5632bo$5631b2o$5631bobo18$5661bo$5660b2o$
5660bobo6$5660bo$5659b2o$5659bobo14$5681bo$5680b2o$5680bobo14$5673bo$
5672b2o$5672bobo$5681b3o$5681bo$5682bo11$5686b3o$5686bo$5687bo9$5720b
3o$5720bo$5721bo3$5695b3o$5695bo$5696bo4$5699b3o$5699bo$5700bo3$5726b
3o$5726bo$5727bo5$5730b3o$5730bo$5731bo7$5730bo$5729b2o$5729bobo31$
5748b3o3b3o$5748bo5bo$5749bo5bo4$5759b3o$5759bo5bo$5760bo3b2o$5764bobo
8$5772bo$5771b2o$5771bobo7b3o$5781bo$5782bo12$5791b3o$5791bo$5792bo10$
5803b3o$5803bo$5804bo4$5808b3o6b3o$5808bo8bo$5809bo8bo4$5829b3o$5829bo
$5830bo3$5849bo$5848b2o$5848bobo10$5845bo$5844b2o$5844bobo9$5851b3o$
5851bo$5852bo6$5849b3o$5849bo$5850bo12$5847b3o$5847bo$5848bo14$5855b3o
$5855bo$5856bo2$5868b3o$5868bo$5859b3o7bo$5859bo$5860bo8$5884b3o$5884b
o$5885bo6$5869b3o$5869bo$5870bo5$5911bo$5910b2o$5910bobo3bo$5899b3o13b
2o$5899bo15bobo$5900bo15$5926bo$5925b2o$5925bobo5$5928b3o$5928bo$5929b
o16$5943b3o$5943bo$5944bo5$5951b3o$5951bo$5952bo4$5978bo$5977b2o$5977b
obo4$5962b3o$5962bo$5963bo$5976b3o$5976bo$5977bo8$5989b3o$5989bo$5990b
o4$5997b3o$5997bo$5998bo14$6008b3o$6008bo$6009bo2$6027b3o$6017bo9bo$
6016b2o10bo$6016bobo5$6027b3o$6027bo$6028bo4$6053b3o$6053bo$6054bo7$
6071bo$6035b3o32b2o$6035bo34bobo$6036bo3$6072bo$6071b2o$6071bobo29$
6104bo$6103b2o$6103bobo10$6115bo$6114b2o$6114bobo16$6140bo$6139b2o$
6139bobo9$6143b3o$6143bo$6144bo$6157b3o$6157bo$6147bo10bo$6146b2o$
6146bobo8$6168b3o$6168bo$6169bo18$6184b3o$6184bo$6185bo10$6193b3o$
6193bo$6194bo14$6215b3o$6215bo$6216bo11$6232bo8bo$6231b2o7b2o$6231bobo
6bobo13$6235b3o$6235bo$6236bo6$6251b3o$6251bo$6252bo8$6247b3o$6247bo$
6248bo4$6254b3o$6254bo$6255bo18$6271b3o$6271bo$6272bo46$6295b3o$6295bo
$6296bo10$6306b3o$6306bo$6307bo$6320bo$6319b2o$6319bobo38$6355b3o$
6355bo$6356bo3$6357bo$6356b2o$6356bobo4$6360bo$6359b2o$6359bobo10$
6365bo$6364b2o7b3o$6364bobo6bo19b3o$6374bo18bo$6394bo3$6378b3o25b3o$
6378bo27bo$6379bo27bo8$6419b3o$6419bo$6420bo4$6436b3o$6436bo$6427b3o7b
o$6427bo$6428bo13b3o$6442bo$6443bo7$6441bo$6440b2o$6440bobo3$6453b3o$
6453bo$6454bo13$6462bo$6461b2o7b3o$6461bobo6bo$6471bo60$6537b3o$6537bo
$6538bo20$6552b3o$6552bo$6553bo30$6584b3o$6584bo$6585bo12$6595b3o$
6595bo$6596bo10$6590b3o$6590bo$6591bo$6604bo$6603b2o7b3o$6603bobo6bo$
6594b3o16bo$6594bo$6595bo58$6679b3o$6679bo$6680bo20$6694b3o$6694bo$
6695bo30$6726b3o$6726bo$6727bo12$6737b3o$6737bo$6738bo13$6746bo$6745b
2o7b3o$6745bobo6bo$6755bo60$6821b3o$6821bo$6822bo20$6836b3o$6836bo$
6837bo30$6868b3o$6868bo$6869bo12$6879b3o$6879bo$6880bo13$6888bo$6887b
2o7b3o$6887bobo6bo$6897bo60$6963b3o$6963bo$6964bo20$6978b3o$6978bo$
6979bo24$7013b3o$7013bo$7014bo8$7026b3o$7026bo$7027bo5$7043bo$7042b2o$
7042bobo7$7041b3o$7041bo$7042bo66$7104b3o$7104bo$7105bo12$7125b3o$
7125bo$7126bo34$7152b3o$7152bo$7153bo10$7172b3o$7172bo$7173bo2$7161b3o
$7161bo$7162bo21$7194bo$7193b2o$7193bobo4$7199bo$7198b2o$7198bobo4$
7212b3o$7212bo$7213bo4$7227b3o$7227bo$7228bo2$7231b3o$7231bo$7232bo6b
3o$7239bo$7240bo50$7269b3o$7269bo$7270bo12$7312b3o$7312bo$7313bo15$
7312bo$7311b2o$7311bobo9$7348b3o$7348bo$7349bo17$7366b3o$7366bo$7367bo
19$7378bo$7377b2o4b3o$7377bobo3bo$7384bo5$7394bo$7393b2o$7393bobo63$
7435b3o$7435bo$7436bo4$7439b3o$7439bo$7440bo12$7457b3o$7457bo$7446b3o
9bo$7446bo$7447bo11$7477bo$7476b2o$7476bobo8$7474bo$7473b2o$7473bobo7b
o$7482b2o$7482bobo20$7544b3o$7544bo$7545bo5$7526b3o$7526bo$7527bo3$
7555b3o$7555bo$7556bo17$7575bo$7574b2o$7574bobo$7587b3o$7587bo$7588bo$
7577bo$7576b2o$7576bobo25$7619b3o$7619bo$7620bo11$7646bo$7645b2o$7645b
obo2$7634bo$7633b2o$7633bobo11$7654b3o$7654bo$7655bo11$7684bo$7683b2o$
7683bobo11$7695b3o$7695bo$7696bo8$7707b3o$7707bo$7708bo9$7727bo$7726b
2o$7726bobo3$7715b3o$7715bo$7716bo26$7756b3o$7756bo$7757bo9$7753bo$
7752b2o$7752bobo13$7775b3o$7775bo$7776bo4$7790b3o$7790bo$7791bo22$
7802b3o$7802bo$7803bo10$7815b3o$7815bo$7816bo19$7836bo$7835b2o$7835bob
o26$7861bo$7860b2o$7860bobo13$7867b3o$7867bo$7868bo8$7887b3o$7887bo$
7888bo$7895bo$7894b2o$7894bobo6$7893bo$7892b2o$7892bobo4$7896bo$7895b
2o$7895bobo24$7922bo$7921b2o$7921bobo3$7924b3o$7924bo$7925bo3$7929b3o$
7929bo$7930bo10$7940b3o$7940bo$7941bo17$7963bo$7962b2o$7962bobo18$
7992bo$7991b2o$7991bobo6$7991bo$7990b2o$7990bobo14$8012bo$8011b2o$
8011bobo14$8004bo$8003b2o$8003bobo$8012b3o$8012bo$8013bo4$8033b3o$
8033bo$8034bo14$8039b3o$8039bo$8040bo6$8047b3o$8047bo$8048bo12$8058b3o
$8058bo$8059bo13$8065bo$8064b2o$8064bobo2$8071bo$8070b2o$8070bobo2$
8080bo$8079b2o$8079bobo5bo$8086b2o$8086bobo3$8092b3o$8092bo$8093bo47$
8126b3o$8126bo$8127bo12$8134b3o14b3o$8134bo16bo$8135bo16bo4$8138b3o$
8138bo$8139bo$8151bo$8150b2o$8150bobo31$8177b3o$8177bo$8178bo2$8181b3o
$8181bo$8182bo5$8183b3o$8183bo$8184bo12$8188b3o$8188bo$8189bo9$8213bo$
8212b2o$8212bobo10$8225bo$8224b2o$8224bobo25$8242b3o$8242bo$8243bo3$
8247bo$8246b2o$8246bobo2$8252bo$8251b2o$8251bobo6$8253bo$8252b2o$8252b
obo7$8264b3o$8264bo$8265bo10$8275b3o$8275bo$8276bo16$8307b3o$8297bo9bo
$8296b2o10bo3b3o$8296bobo13bo$8313bo16$8322b3o$8322bo$8323bo6$8321b3o$
8321bo$8322bo3$8334bo$8333b2o$8325bo7bobo$8324b2o$8324bobo15$8350b3o$
8350bo$8351bo12$8360b3o$8360bo$8361bo8$8372b3o$8372bo$8373bo13$8381bo$
8380b2o$8380bobo5bo$8387b2o$8387bobo12$8383b3o$8383bo$8384bo8$8396b3o$
8396bo$8397bo17$8402bo$8401b2o$8401bobo7$8417b3o$8417bo$8418bo4$8426b
3o$8426bo$8427bo3$8413bo$8412b2o18b3o$8412bobo17bo$8433bo43$8520b3o$
8520bo$8521bo2$8486bo$8485b2o$8485bobo4$8528b3o$8528bo$8529bo2$8490bo$
8489b2o$8489bobo4$8529b3o$8529bo$8530bo2$8488bo$8487b2o$8487bobo4$
8542b3o$8542bo$8543bo4$8550b3o$8550bo$8551bo14$8561b3o$8561bo$8562bo2$
8580b3o$8570bo9bo$8569b2o10bo5bo$8569bobo14b2o$8586bobo8$8601bo$8600b
2o$8600bobo8$8614bo$8613b2o$8613bobo8$8613bo$8612b2o$8612bobo7$8628b3o
$8628bo$8629bo6$8629b3o$8629bo12b3o$8630bo11bo$8634b3o6bo$8634bo$8635b
o36$8662b3o$8662bo6bo$8663bo4b2o$8668bobo$8675b3o$8675bo$8676bo9$8679b
o$8678b2o$8678bobo7$8678b3o$8678bo6bo$8679bo4b2o$8684bobo6$8697bo$
8696b2o$8696bobo37$8744b3o$8744bo$8745bo15$8736b3o$8736bo$8737bo8$
8749b3o$8749bo$8750bo7$8764bo$8763b2o$8763bobo11$8790b3o$8790bo$8791bo
14$8794b3o$8794bo$8795bo10$8805b3o$8805bo$8806bo8$8811b3o$8811bo$8802b
3o7bo$8802bo$8803bo3$8844bo$8843b2o$8843bobo4$8831bo$8830b2o$8820bo9bo
bo$8819b2o$8819bobo4$8852bo$8851b2o$8851bobo11$8846b3o$8846bo$8847bo9$
8844bo$8843b2o$8843bobo10$8854bo$8853b2o$8853bobo5$8853bo$8852b2o$
8852bobo12$8864bo$8863b2o$8863bobo$8881b3o$8881bo$8882bo12$8875b3o$
8875bo$8876bo23$8903bo$8902b2o$8902bobo9$8901b3o$8901bo$8902bo5$8933bo
$8932b2o$8932bobo!
We can see, lot of the slow salvo recipe does pulling the target (it would be better to think about it as to be 4 different recipes with long target repositioning).
We could use "fast mode".
I think about introducing occasional exact gap between gliders to the recipes. Then we can use something like

Code: Select all

x = 392, y = 385, rule = B3/S23
2o$2o5bo$6b2o$6bobo8$20bo$19b2o$19bobo6$36bo$35b2o$35bobo6$35bo$34b2o$
34bobo9$50b3o$50bo$51bo5$63bo$62b2o$62bobo5$57b2o$57bobo$57bo328$390b
2o$389b2o$391bo!
to do the pulls.

... and I have to make table of reasonably good allowed "exact gaps".
(We can use different lanes to get honeyfarm, or block, we can use different ott180)
Here are the reasonable ones:

Code: Select all

x = 163, y = 65, rule = LifeHistory14
13$35.D$33.D.D$34.2D12$12.D.D$13.2D$13.D2$89.D.D$90.2D$90.D5$98.2I$
16.2I35.3I42.2I34.D.D$16.2I46.I38.I31.2D$23.I40.I38.I31.D6.2I$23.I40.
I38.I38.2I$23.I2$136.2I$136.2I3$24.2I38.2I38.2I38.2I$24.I.I37.I.I37.I
.I37.I.I$24.I39.I39.I39.I!
Considering the allocation ... it would be better to allign the allocation ott's carefully to create targets in proximity of optimal "pslmake origins".
For example for SSSW we have to stop earlier to make ott for NEEE target, then do (short) pull to get correct positions for directed targets at SSSW, SS and EE.

Actually one of them is cheeper

Code: Select all

x = 368, y = 127, rule = LifeHistory
97.D$95.D.D$96.2D12$306.D.D$307.2D$307.D5$315.2D$315.2D$219.D.D98.D$
220.2D98.D$220.D99.D$115.3D$126.D$D.D123.D$.2D123.D$.D6.2D5.2A98.2A
98.2A98.2A$8.2D5.2A98.2A5.A92.2A98.2A$121.2A198.3A$121.A.A100.A96.A$
2.2D19.3A197.2A97.A$2.2D19.A199.CDA$24.A198.2D$230.D$230.D$230.D2$
135.A$38.3A93.2A197.3A$38.A95.A.A196.A$39.A294.A$235.A$234.2A$234.A.A
2$151.A$38.3A109.2A189.3A$38.A111.A.A188.A$39.A302.A5$150.A$149.2A$
149.A.A111.A$262.2A85.3A$262.A.A84.A$338.3A9.A$338.A$339.A2$350.3A$
273.A76.A$165.3A104.2A77.A$165.A106.A.A$166.A94.3A$261.A$262.A3$178.A
$177.2A186.2A$177.A.A185.A.A$365.A4$172.2A$172.A.A$172.A14$73.3A$73.A
$74.A208.3A$283.A$284.A3$291.2A$291.A.A$291.A16$88.A$87.2A7.2A$87.A.A
6.A.A$96.A!
(I tend to prefere blinkers thanks to pslmake expected costs ... and here blocks win)
Post Reply