calcyman wrote: ↑May 16th, 2020, 11:43 am
calcyman wrote: ↑July 14th, 2017, 5:31 pm
To reduce complexity, I thought that a dynamic tape-reading head might be more appropriate. Here's one which should be relatively easily synthesisable:
Adding another two basic rakes (on each side) is sufficient to produce a backward LWSS stream as output, which can then be fed into an interpreter:
Code: Select all
x = 874, y = 155, rule = B3/S23
169b4o$168b6o$168b4ob2o$172b2o$178bo2bo$182bo$170bo7bo3bo$179b4o$170b
2o2b3o$160bo9b2o2b3o$144bo2b2o9bo2bo8b2o2b3o$144bo3b2o8bo2bo3b2o12b4o$
144bo3bob2o12bo2bo10bo3bo$145bo2bob2o6bo2bo2b2ob2o13bo$147b2ob2o8b2o4b
o4b2o5bo2bo$147b2o20bo4bo$148bobo8b3o13bo$133b2o14b2o9bo8bo5bo$131b2ob
2o34b6o$131b4o$132b2o222bo2bo38bo2bo$360bo41bo$204b2o150bo3bo37bo3bo$
200b4ob2o150b4o38b4o$200b6o$176bo24b4o149bo10b6o25bo10b6o$175bobo33b4o
137b2obo8bo5bo23b2obo8bo5bo$174bo3bo31bo3bo137b2o16bo23b2o16bo$131bo
43bo2bo35bo149bo4bo36bo4bo$132b2o41b2ob2o18bo7b2o2bo2bo152b2o40b2o$
131b2o45bo18b2o7b3o168b2o40b2o$173bo3bo17bob2obo5b2o2bo2bo152bo8b2ob2o
28bo8b2ob2o$180b2o7bo4b5obo13bo138bo10bobo4bo3b4o16bo10bobo4bo3b4o$
173bo7b2o7bo2b2ob3ob3o7bo3bo137bo3bo6bo2bo5bo3b2o16bo3bo6bo2bo5bo3b2o$
174bo5b3ob2obo2bo2bobobo13b4o138b4o6bo6bo2bo21b4o6bo6bo2bo$183b2ob4o3b
o3bo165bo2bo5bo3b2o27bo2bo5bo3b2o$183b5o6bobo167bobo4bo3b4o27bobo4bo3b
4o$149bo45bo6b6o158bo8b2ob2o28bo8b2ob2o$149bobo49bo5bo150bobo16b2o21bo
bo16b2o$149b2o56bo149b3o39b3o$119bo81bo4bo150b3o39b3o$13b2o105b2o81b2o
$5bo6bobo104b2o242b4o38b4o$4bobo6bo348bo3bo37bo3bo$4bobo168bo2bo172bo
14bo26bo14bo$2b3ob2o3b5o163bo172b2o8bo2bo28b2o8bo2bo$bo8bo2bo2bo158bo
3bo171b2o40b2o$2b3ob2o2b2o3b2o159b4o$4bob2o220bo$o225bo3bo$3o228bo113b
o41bo$3bo222bo4bo114b2o40b2o$2b2o223b5o113b2o40b2o$241b4o$240bo3bo$
244bo$243bo95bo41bo$5b2o233b2o98b2o40b2o$4bo2bo217b5o5b3o101b2o40b2o$
5b2o218b3ob2o3bo3b2o3b2o$13b2o209bobo3bo4bo2bob3ob2o$13bobo193b2o12b2o
bo9b9o$15bo193bobo12bo4bo10b4o89bo41bo$15b2o194b2o11bo109b2o40b2o$2b2o
207b2o12bobo105b2o40b2o$3bo204b2ob2o13bo$3o206b3o20b6o$o209bo20bo5bo$
237bo89bo41bo$231bo4bo91b2o40b2o$233b2o92b2o40b2o3$255b2o10b2o34b2o10b
2o14bo11bo$255b2o10b2o34b2o10b2o14bo11bo11bo7bo$331bo11bo10b3o7b2o$
353bobobo5b2o$81b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b
3o9b3o33b3o9b3o27b3o3b3o3b3o3b3o4b3ob3o8b3o9b3o9b3o9b3o9b3o9b3o9b3o33b
3o9b3o33b3o9b3o33b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o33b3o9b3o33b3o
9b3o33b3o9b3o9b3o9b3o9b3o9b3o$353bobobo5b2o$331bo11bo10b3o7b2o$255b2o
10b2o34b2o10b2o14bo11bo11bo7bo$255b2o10b2o34b2o10b2o14bo11bo3$233b2o
92b2o40b2o$231bo4bo91b2o40b2o$237bo89bo41bo$o209bo20bo5bo$3o206b3o20b
6o$3bo204b2ob2o13bo$2b2o207b2o12bobo105b2o40b2o$15b2o194b2o11bo109b2o
40b2o$15bo193bobo12bo4bo10b4o89bo41bo$13bobo193b2o12b2obo9b9o$13b2o
209bobo3bo4bo2bob3ob2o$5b2o218b3ob2o3bo3b2o3b2o$4bo2bo217b5o5b3o101b2o
40b2o$5b2o233b2o98b2o40b2o$243bo95bo41bo$244bo$240bo3bo$241b4o$2b2o
223b5o113b2o40b2o$3bo222bo4bo114b2o40b2o$3o228bo113bo41bo$o225bo3bo$4b
ob2o220bo$2b3ob2o2b2o3b2o159b4o$bo8bo2bo2bo158bo3bo171b2o40b2o$2b3ob2o
3b5o163bo172b2o8bo2bo28b2o8bo2bo$4bobo168bo2bo172bo14bo26bo14bo$4bobo
6bo348bo3bo37bo3bo$5bo6bobo104b2o242b4o38b4o$13b2o105b2o81b2o$119bo81b
o4bo150b3o39b3o$149b2o56bo149b3o39b3o$149bobo49bo5bo150bobo16b2o21bobo
16b2o$149bo45bo6b6o158bo8b2ob2o28bo8b2ob2o$183b5o6bobo167bobo4bo3b4o
27bobo4bo3b4o$183b2ob4o3bo3bo165bo2bo5bo3b2o27bo2bo5bo3b2o$174bo5b3ob
2obo2bo2bobobo13b4o138b4o6bo6bo2bo21b4o6bo6bo2bo$173bo7b2o7bo2b2ob3ob
3o7bo3bo137bo3bo6bo2bo5bo3b2o16bo3bo6bo2bo5bo3b2o$180b2o7bo4b5obo13bo
138bo10bobo4bo3b4o16bo10bobo4bo3b4o$173bo3bo17bob2obo5b2o2bo2bo152bo8b
2ob2o28bo8b2ob2o$131b2o45bo18b2o7b3o168b2o40b2o$132b2o41b2ob2o18bo7b2o
2bo2bo152b2o40b2o$131bo43bo2bo35bo149bo4bo36bo4bo$174bo3bo31bo3bo137b
2o16bo23b2o16bo$175bobo33b4o137b2obo8bo5bo23b2obo8bo5bo$176bo24b4o149b
o10b6o25bo10b6o$200b6o$200b4ob2o150b4o38b4o$204b2o150bo3bo37bo3bo$360b
o41bo$132b2o222bo2bo38bo2bo$131b4o$131b2ob2o34b6o$133b2o14b2o9bo8bo5bo
$148bobo8b3o13bo$147b2o20bo4bo$147b2ob2o8b2o4bo4b2o5bo2bo$145bo2bob2o
6bo2bo2b2ob2o13bo$144bo3bob2o12bo2bo10bo3bo$144bo3b2o8bo2bo3b2o12b4o$
144bo2b2o9bo2bo8b2o2b3o$160bo9b2o2b3o$170b2o2b3o$179b4o$170bo7bo3bo$
182bo$178bo2bo$172b2o$168b4ob2o$168b6o$169b4o!
We'll probably need a blinker-puffer-based escort to allow this c/2 ensemble to be fired down later.
Well, here you go:
Code: Select all
x = 1269, y = 945, rule = B3/S23
107$1059b6o$1058bo5bo$1064bo$1058bo4bo$1060b2o$988bob2o$987b2obobo67b
5o$992bob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o2b7o$987b2obob
o66bob3ob2o$988bob2o72b2o3$1053b6o$1052bo5bo3b5o$1058bo2bo4bo$1052bo4b
o8bo$1054b2o5bo3bo$1063bo6$1048b6o$1047bo5bo$1053bo$1047bo4bo$1049b2o
24$919b5o$918bo4bo$923bo$918bo3bo$920bo57$1184bo$1183bo$1181bob3o97$
621b6o$620bo5bo$626bo104b6o$620bo4bo104bo5bo$622b2o112bo$550bob2o176bo
4bo$549b2obobo67b5o105b2o$554bob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o
b3ob3ob3o2b7o32bob2o$549b2obobo66bob3ob2o30b2obobo67b5o$550bob2o72b2o
36bob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o2b7o$659b2obobo66b
ob3ob2o$660bob2o72b2o$615b6o$614bo5bo3b5o$620bo2bo4bo96b6o$614bo4bo8bo
95bo5bo3b5o$616b2o5bo3bo102bo2bo4bo$625bo98bo4bo8bo$726b2o5bo3bo$735bo
4$610b6o$609bo5bo$615bo104b6o$609bo4bo104bo5bo$611b2o112bo$719bo4bo$
721b2o22$481b5o$480bo4bo$485bo105b5o$480bo3bo105bo4bo$482bo112bo$590bo
3bo$592bo46$156b2o$152b4ob2o$152b6o$153b4o$163b4o$162bo3bo$148bo8b2o7b
o$126b2o19bo8b4o2bo2bo$124bo23bo6bo3b2o$124bo13bo17b4o2bo2bo580bo$124b
o4bo7bobo17b2o7bo578bo$126bo4bo4b3o23bo3bo576bob3o108bo$127bo2b2o4b3ob
2o21b4o688bo$126b2o3bo5b2o2b2o5b3o702bob3o$126bo2bo8b4o6b2o$116b2o21b
2o7b2o4b6o$115b4o9b2o23bo5bo$115b2ob2o5b2ob2o29bo$117b2o7b3o24bo4bo$
127bo27b2o$185b4o152b4o38b4o$184b6o150bo3bo37bo3bo$184b4ob2o153bo5b2o
34bo5b2o$188b2o150bo2bo4bo4bo28bo2bo4bo4bo$194bo2bo156bo41bo$198bo149b
o5bo35bo5bo$185bo8bo3bo150b6o36b6o$184bo5bo4b4o$183bo7b2o167b2o40b2o$
162b2o10bo8bobo4b3o166b4o38b4o$112bobo43bo3bobo9bo4b3o2b2o5b2o166b2ob
2o37b2ob2o$113b2o43bo4b2o8bo8bob3o3bo4b4o142b3obob3ob2ob2o5b2o20b3obob
3ob2ob2o5b2o$113bo45bo5bo8b5o4bo2bo7bo3bo141bo3bo2b3o6bo25bo3bo2b3o6bo
$159b2o4bo7bo3bo5bo14bo142b2o13b2o25b2o13b2o$159b5o8b2ob3o5bo3b2o5bo2b
o148b2obo6bo31b2obo6bo$160bo2bo14bo3bo2bo4bo153bo4bob2ob2o5b2o23bo4bob
2ob2o5b2o$161bo18bo10bo153b4o10b2ob2o23b4o10b2ob2o$161bobo8b2o11bo5bo
154bo12b4o25bo12b4o$126bo35b2o10bo11b6o168b2o40b2o$125bo$125b3o210bobo
5bo2bo30bobo5bo2bo$339b2o9bo30b2o9bo$100bobo236bo6bo3bo30bo6bo3bo$101b
2o244b4o38b4o$101bo58b4o$159bo3bo$163bo168bobo39bobo$159bo2bo170b2o40b
2o$333bo41bo$211b5o$210bo4bo$215bo8bo2bo$210bo3bo13bo97bobo39bobo$212b
o11bo3bo98b2o40b2o$211bo13b4o98bo41bo$211b2o2b2o$210bo2bob2o$211b2o8bo
3b3o$204b3o4bo9bo2b5o91bobo39bobo$203bo2bo14bob4ob2o91b2o40b2o$207bo
19b2o92bo41bo$190bobo12bo$191bo13bob2o$187b2o18bo9b2o$186bobob2o11b2ob
o8bo4bo93bobo39bobo$185bo6bo12bo15bo93b2o40b2o$185bo2bob2o23bo5bo93bo
41bo$185bo5bo24b6o$186bo3bo$187bo$188b2o160bobo$351b2o$309bo12bo11bo
16bo$310bo11bo11bo$308b3o11bo11bo11b2o$308bo39bo$96b3o9b3o9b3o9b3o9b3o
9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o3b3o3b3o3b3o3b3o3b
3o3b3o7bo2bo8b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b
3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o
9b3o9b3o9b3o9b3o9b3o$308bo39bo$308b3o11bo11bo11b2o$310bo11bo11bo$309bo
12bo11bo16bo$351b2o$188b2o160bobo$187bo$186bo3bo$185bo5bo24b6o$185bo2b
ob2o23bo5bo93bo41bo$185bo6bo12bo15bo93b2o40b2o$186bobob2o11b2obo8bo4bo
93bobo39bobo$187b2o18bo9b2o$191bo13bob2o$190bobo12bo$207bo19b2o92bo41b
o$203bo2bo14bob4ob2o91b2o40b2o$204b3o4bo9bo2b5o91bobo39bobo$211b2o8bo
3b3o$210bo2bob2o$211b2o2b2o$211bo13b4o98bo41bo$212bo11bo3bo98b2o40b2o$
210bo3bo13bo97bobo39bobo$215bo8bo2bo$210bo4bo$211b5o$333bo41bo$159bo2b
o170b2o40b2o$163bo168bobo39bobo$159bo3bo$101bo58b4o$101b2o244b4o38b4o$
100bobo236bo6bo3bo30bo6bo3bo$339b2o9bo30b2o9bo$125b3o210bobo5bo2bo30bo
bo5bo2bo$125bo$126bo35b2o10bo11b6o168b2o40b2o$161bobo8b2o11bo5bo154bo
12b4o25bo12b4o$161bo18bo10bo153b4o10b2ob2o23b4o10b2ob2o$160bo2bo14bo3b
o2bo4bo153bo4bob2ob2o5b2o23bo4bob2ob2o5b2o$159b5o8b2ob3o5bo3b2o5bo2bo
148b2obo6bo31b2obo6bo$159b2o4bo7bo3bo5bo14bo142b2o13b2o25b2o13b2o$113b
o45bo5bo8b5o4bo2bo7bo3bo141bo3bo2b3o6bo25bo3bo2b3o6bo$113b2o43bo4b2o8b
o8bob3o3bo4b4o142b3obob3ob2ob2o5b2o20b3obob3ob2ob2o5b2o$112bobo43bo3bo
bo9bo4b3o2b2o5b2o166b2ob2o37b2ob2o$162b2o10bo8bobo4b3o166b4o38b4o$183b
o7b2o167b2o40b2o$184bo5bo4b4o$185bo8bo3bo150b6o36b6o$198bo149bo5bo35bo
5bo$194bo2bo156bo41bo$188b2o150bo2bo4bo4bo28bo2bo4bo4bo$184b4ob2o153bo
5b2o34bo5b2o$184b6o150bo3bo37bo3bo$185b4o152b4o38b4o$127bo27b2o$117b2o
7b3o24bo4bo$115b2ob2o5b2ob2o29bo$115b4o9b2o23bo5bo$116b2o21b2o7b2o4b6o
$126bo2bo8b4o6b2o$126b2o3bo5b2o2b2o5b3o702bob3o$127bo2b2o4b3ob2o21b4o
688bo$126bo4bo4b3o23bo3bo576bob3o108bo$124bo4bo7bobo17b2o7bo578bo$124b
o13bo17b4o2bo2bo580bo$124bo23bo6bo3b2o$126b2o19bo8b4o2bo2bo$148bo8b2o
7bo$162bo3bo$163b4o$153b4o$152b6o$152b4ob2o$156b2o46$592bo$590bo3bo$
482bo112bo$480bo3bo105bo4bo$485bo105b5o$480bo4bo$481b5o22$721b2o$719bo
4bo$611b2o112bo$609bo4bo104bo5bo$615bo104b6o$609bo5bo$610b6o4$735bo$
726b2o5bo3bo$625bo98bo4bo8bo$616b2o5bo3bo102bo2bo4bo$614bo4bo8bo95bo5b
o3b5o$620bo2bo4bo96b6o$614bo5bo3b5o$615b6o$660bob2o72b2o$659b2obobo66b
ob3ob2o$550bob2o72b2o36bob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o
b3o2b7o$549b2obobo66bob3ob2o30b2obobo67b5o$554bob3ob3ob3ob3ob3ob3ob3ob
3ob3ob3ob3ob3ob3ob3ob3ob3o2b7o32bob2o$549b2obobo67b5o105b2o$550bob2o
176bo4bo$622b2o112bo$620bo4bo104bo5bo$626bo104b6o$620bo5bo$621b6o97$
1181bob3o$1183bo$1184bo57$920bo$918bo3bo$923bo$918bo4bo$919b5o24$1049b
2o$1047bo4bo$1053bo$1047bo5bo$1048b6o6$1063bo$1054b2o5bo3bo$1052bo4bo
8bo$1058bo2bo4bo$1052bo5bo3b5o$1053b6o3$988bob2o72b2o$987b2obobo66bob
3ob2o$992bob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o2b7o$987b2o
bobo67b5o$988bob2o$1060b2o$1058bo4bo$1064bo$1058bo5bo$1059b6o!
This stops the tape reader without releasing any gliders. XWSS salvos can be used to clean up the ash.
Edit:
1G seed that destroys the UC
Code: Select all
x = 1101, y = 1853, rule = B3/S23
92$176bo$175bobo$176b2o6$161b2o$160bobo$161bo3$185bo$184bobo$168b2o15b
2o$168bobo$169bobo$170bo4$169b2o$168bobo$169bo5$176b2o$176bobo$177bobo
9bo$178bo9bobo$189b2o3$177b2o$176bobo$177bo5$184b2o$184bobo11bo43bo$
185bobo9bobo41bobo$186bo11b2o42b2o4$185b2o$184bobo$185bo5$192b2o$192bo
bo$193bobo$194bo9bo$203bobo41bo$204b2o40bobo$247b2o$193b2o$192bobo$
193bo5$200b2o$200bobo$201bobo$202bo4$201b2o$200bobo$201bo5$208b2o$208b
obo$209bobo$210bo4$209b2o$208bobo$209bo2$214b2o6bo$214bobo4bobo$215bob
o3b2o$216bo5$228b2o6bo$228bobo4bobo$219bo9bobo3b2o$218bobo9bo$219b2o4$
235bo6b2o6bo$234bobo5bobo4bobo$235b2o6bobo3b2o$244bo5$249bo6b2o6bo$
248bobo5bobo4bobo$249b2o6bobo3b2o$258bo5$270b2o6bo$270bobo4bobo$271bob
o3b2o$260bo11bo$259bobo$260b2o3$284b2o6bo$284bobo4bobo$275bo9bobo3b2o$
274bobo9bo$275b2o4$298b2o6bo$290bo7bobo4bobo$289bobo7bobo3b2o$290b2o8b
o5$312b2o6bo$312bobo4bobo$313bobo3b2o$314bo2$300bo$299bobo$300b2o$326b
2o6bo$326bobo4bobo$317bo9bobo3b2o$316bobo9bo$317b2o4$340b2o6bo$340bobo
4bobo$341bobo3b2o$342bo$329bo$328bobo$329b2o2$354b2o6bo$346bo7bobo4bob
o$345bobo7bobo3b2o$346b2o8bo5$368b2o6bo$368bobo4bobo$359bo9bobo3b2o$
358bobo9bo$359b2o4$382b2o6bo$382bobo4bobo$383bobo3b2o$372bo11bo$371bob
o$372b2o3$396b2o6bo$396bobo4bobo$397bobo3b2o$386bo11bo$385bobo$386b2o
3$410b2o6bo$410bobo4bobo$411bobo3b2o$412bo5$395bo28b2o6bo$394bobo27bob
o4bobo$395b2o28bobo3b2o$426bo5$438b2o6bo$408bo29bobo4bobo$407bobo29bob
o3b2o$408b2o30bo5$452b2o6bo$422bo29bobo4bobo$421bobo29bobo3b2o$422b2o
30bo5$466b2o6bo$466bobo4bobo$467bobo3b2o$468bo2$432bo$431bobo$432b2o$
451bo28b2o6bo$450bobo27bobo4bobo$451b2o28bobo3b2o$482bo5$465bo28b2o6bo
$464bobo27bobo4bobo$465b2o28bobo3b2o$496bo5$479bo28b2o6bo$478bobo27bob
o4bobo$479b2o28bobo3b2o$510bo5$522b2o6bo$522bobo4bobo$523bobo3b2o$524b
o$489bo$488bobo$489b2o2$536b2o6bo$536bobo4bobo$537bobo3b2o$538bo$503bo
$502bobo$503b2o2$550b2o6bo$550bobo4bobo$551bobo3b2o$552bo5$564b2o6bo$
564bobo4bobo$565bobo3b2o$566bo5$578b2o6bo$504bo73bobo4bobo$503bobo73bo
bo3b2o$504b2o18bo55bo$523bobo$524b2o3$591b2o$540bo50bobo$539bobo50bobo
$540b2o51bo31bo$602bo21bobo$601bobo21b2o$602b2o$592b2o$555bo35bobo$
554bobo35bo$555b2o4$599b2o$599bobo$600bobo$568bo32bo$567bobo$568b2o2$
600b2o$599bobo$600bo7$611bo$610bobo$610b2o4$615b2o$615b2o2$625b2o6bo$
625bobo4bobo$626bobo3b2o$627bo7$641b2o$640bobo$641bo2$626bo$625bobo18b
2o$626b2o18b2o9$650b2o$649bobo$650bo3$655b2o$655b2o8$658b2o$657bobo$
658bo3$663b2o$663b2o4$662b2o6bo$662bobo4bobo$663bobo3b2o$664bo5$676b2o
6bo$676bobo4bobo$677bobo3b2o$678bo3$663bo$662bobo$663b2o25b2o6bo$690bo
bo4bobo$691bobo3b2o$692bo6$705b2o6bo$673bo31bobo4bobo$672bobo31bobo3b
2o$673b2o32bo4$689bo$688bobo$689b2o3$724bo$723bobo$723b2o4$702bo25b2o$
701bobo24b2o$702b2o32b2o$736bobo$737bobo$738bo9bo$747bobo$748b2o2$737b
2o$736bobo$737bo10$750b2o$749bobo$750bo3$755b2o$755b2o8$759bo$758bobo$
758b2o$793bo$792bobo$792b2o$763b2o$763b2o6$784bo$783bobo$783bo2bo$784b
2o58bo$806bo36bobo$805bobo36b2o$805b2o3$779b2o$779b2o29b2o$810b2o$819b
2o$818bobo$819bo3$824b2o$824b2o4$835b2o$834bobo$835bo$825b2o$825bobo$
826bobo$827bo2$835bo$834bobo$826b2o7b2o$825bobo$826bo6$834b2o$834bobo$
835bobo$836bo$845bo$844bobo$845b2o$835b2o$834bobo$835bo6$889bo$845b2o
41bobo$844bobo41b2o$845bo3$850b2o$850b2o9$854b2o$853bobo$854bo3$859b2o
$859b2o19$838bo$837bobo$838b2o7$860bo$859bobo$860b2o4$819b2o$819b2o$
846bo6b2o$845bobo4bobo$846b2o3bobo$852bo$815b2o$815b2o5$830bo6b2o$829b
obo4bobo$830b2o3bobo$836bo2$826b3o$828bo$827bo63$941bo$940bobo$940b2o
15$1002b2o$1000bo3bo$999bo2bobo$998bo3bob2o$990b2o7b2obo$989bo2bo9bob
2o3b2o$989b3o10bobo4b2o$992b8ob2obo$991bo2b6o3bo3b4o$991b2o2b4o8bo2bo$
987b2o$986bo2bo11bo5bo$985bobobo7b2o2bo4b3o$985bobob2o5bo5bo2b3obo$
983b2obobo3bo2b2o2bobo2b2o3bo$983bo2bo2b2obo3b2o3bo2bob3o$980b2obobobo
4bo4b3o5b3o$980bo2b2o2bob2o$981b2o3bo2bo7b3o5b3o$983b2ob2obo6b2o3bo2bo
b3o$983bo4bo6b2o2bobo2b2o3bo$984b4o8bo5bo2b3obo$985bo11b2o2bo4b3o$983b
o17bo5bo$983b2o3bobo$988b2o17bo2bo$916b2o71bo8b3o6b4o$912b2obo2bob2o
75bo3bo$912bo4bo2b2o75bobob2o6b2o$916bo80bo4bo6b2o$913bobo66bobo9b3ob
4ob2o$982b2o9bo3bo4bob2o$983bo9bobobob2obo3bo$912bo80bo3bob2obobobo$
911bobo80b2obo4bo3bo$911bo2bo80b2ob4ob3o$912b2o48b2o12bobo18bo4bo$962b
obo11b2o19b2obobo$964bo12bo20bo3bo$916b2o45bob2o16bo3bo11b3o$916bobo
44bo2bo14b2obobob2o$918bo42b2obo15bo3bobo3bo$918b2o40bobob2o13bo3b2ob
2o3bo$961bo17bobo7bobo$954b2o24bo9bo$955bo$882b2o71bobo25b2ob2o$878b4o
4b2o68b2o24bobobobo$878b3ob2o2b2o95bo3bo$883bo2$964b2o4b2o$964bobo3bob
o$887bo77bo6bo$886bobo66b2o15b2o$885bo2bo66bo$886b2o64b2obo$952bob2ob
2o$957bo$882b2o73bobo6bo13b2o$881bobo74b2o7bo13bo$881bo83b3o11bo5b2o$
880b2o97b2o5bo$986bob2o$979b2o2b2obo2bo$979b2o3bob2o$984bo$983b2o$990b
2o$990bobo$992bo$992bob2o$989b2obobo$989b2obobo$983b2o7bob2o$973b2o7bo
2bo3b4o2bo$940b2o30bobo8b2o4bo3b2o$932bo6bobo30bo18b2o$931bobo6bo30b2o
19bo$931bobo56bo$929b3ob2o3b5o47b2o$928bo8bo2bo2bo$929b3ob2o2b2o3b2o$
931bob2o$927bo$927b3o$930bo$929b2o5$932b2o$931bo2bo$932b2o$940b2o21b2o
$940bobo13b2o4bo2bo$942bo13b2o5bobo$942b2o20bo$929b2o$930bo25b3o9b2o$
927b3o27b2o9bo$927bo26b2o13b3o$954b3o14bo$955bobo$956b2o14$956b2o$955b
obo$954b3o14bo$927bo26b2o13b3o$927b3o27b2o9bo$930bo25b3o9b2o$929b2o$
942b2o20bo$942bo13b2o5bobo$940bobo13b2o4bo2bo$940b2o21b2o$932b2o$931bo
2bo$932b2o5$929b2o$930bo$927b3o$927bo$931bob2o$929b3ob2o2b2o3b2o$928bo
8bo2bo2bo$929b3ob2o3b5o47b2o$931bobo56bo$931bobo6bo30b2o19bo$932bo6bob
o30bo18b2o$940b2o30bobo8b2o4bo3b2o$973b2o7bo2bo3b4o2bo$983b2o7bob2o$
989b2obobo$989b2obobo$992bob2o$992bo$990bobo$990b2o$983b2o$984bo$979b
2o3bob2o$979b2o2b2obo2bo$986bob2o$880b2o97b2o5bo$881bo83b3o11bo5b2o$
881bobo74b2o7bo13bo$882b2o73bobo6bo13b2o$957bo$952bob2ob2o$886b2o64b2o
bo$885bo2bo66bo$886bobo66b2o15b2o$887bo77bo6bo$964bobo3bobo$964b2o4b2o
2$883bo$878b3ob2o2b2o95bo3bo$878b4o4b2o68b2o24bobobobo$882b2o71bobo25b
2ob2o$955bo$954b2o24bo9bo$961bo17bobo7bobo$918b2o40bobob2o13bo3b2ob2o
3bo$918bo42b2obo15bo3bobo3bo$916bobo44bo2bo14b2obobob2o$916b2o45bob2o
16bo3bo11b3o$964bo12bo20bo3bo$962bobo11b2o19b2obobo$912b2o48b2o12bobo
18bo4bo$911bo2bo80b2ob4ob3o$911bobo80b2obo4bo3bo$912bo80bo3bob2obobobo
$983bo9bobobob2obo3bo$982b2o9bo3bo4bob2o$913bobo66bobo9b3ob4ob2o$916bo
80bo4bo6b2o$912bo4bo2b2o75bobob2o6b2o$912b2obo2bob2o75bo3bo$916b2o71bo
8b3o6b4o$988b2o17bo2bo$983b2o3bobo$983bo17bo5bo$985bo11b2o2bo4b3o$984b
4o8bo5bo2b3obo$983bo4bo6b2o2bobo2b2o3bo$983b2ob2obo6b2o3bo2bob3o$981b
2o3bo2bo7b3o5b3o$980bo2b2o2bob2o$980b2obobobo4bo4b3o5b3o$983bo2bo2b2ob
o3b2o3bo2bob3o$983b2obobo3bo2b2o2bobo2b2o3bo$985bobob2o5bo5bo2b3obo$
985bobobo7b2o2bo4b3o$986bo2bo11bo5bo$987b2o$991b2o2b4o8bo2bo$991bo2b6o
3bo3b4o$992b8ob2obo$989b3o10bobo4b2o$989bo2bo9bob2o3b2o$990b2o7b2obo$
998bo3bob2o$999bo2bobo$1000bo3bo$1002b2o15$940b2o$940bobo$941bo63$827b
o$828bo$826b3o2$836bo$830b2o3bobo$829bobo4bobo$830bo6b2o5$815b2o$815b
2o$852bo$846b2o3bobo$845bobo4bobo$846bo6b2o$819b2o$819b2o4$860b2o$859b
obo$860bo7$838b2o$837bobo$838bo19$859b2o$859b2o3$854bo$853bobo$854b2o
9$850b2o$850b2o3$845bo$844bobo41b2o$845b2o41bobo$889bo6$835bo$834bobo$
835b2o$845b2o$844bobo$845bo$836bo$835bobo$834bobo$834b2o6$826bo$825bob
o$826b2o7b2o$834bobo$835bo2$827bo$826bobo$825bobo$825b2o$835bo$834bobo
$835b2o4$824b2o$824b2o3$819bo$818bobo$819b2o$810b2o$779b2o29b2o$779b2o
3$805b2o$805bobo36b2o$806bo36bobo$784b2o58bo$783bo2bo$783bobo$784bo6$
763b2o$763b2o$792b2o$792bobo$793bo$758b2o$758bobo$759bo8$755b2o$755b2o
3$750bo$749bobo$750b2o10$737bo$736bobo$737b2o2$748b2o$747bobo$738bo9bo
$737bobo$736bobo$702b2o32b2o$701bobo24b2o$702bo25b2o4$723b2o$723bobo$
724bo3$689b2o$688bobo$689bo4$673b2o32bo$672bobo31bobo3b2o$673bo31bobo
4bobo$705b2o6bo6$692bo$691bobo3b2o$690bobo4bobo$663b2o25b2o6bo$662bobo
$663bo3$678bo$677bobo3b2o$676bobo4bobo$676b2o6bo5$664bo$663bobo3b2o$
662bobo4bobo$662b2o6bo4$663b2o$663b2o3$658bo$657bobo$658b2o8$655b2o$
655b2o3$650bo$649bobo$650b2o9$626b2o18b2o$625bobo18b2o$626bo2$641bo$
640bobo$641b2o7$627bo$626bobo3b2o$625bobo4bobo$625b2o6bo2$615b2o$615b
2o4$610b2o$610bobo$611bo7$600bo$599bobo$600b2o2$568b2o$567bobo$568bo
32bo$600bobo$599bobo$599b2o4$555b2o$554bobo35bo$555bo35bobo$592b2o$
602b2o$601bobo21b2o$602bo21bobo$540b2o51bo31bo$539bobo50bobo$540bo50bo
bo$591b2o3$524b2o$523bobo$504b2o18bo55bo$503bobo73bobo3b2o$504bo73bobo
4bobo$578b2o6bo5$566bo$565bobo3b2o$564bobo4bobo$564b2o6bo5$552bo$551bo
bo3b2o$550bobo4bobo$550b2o6bo2$503b2o$502bobo$503bo$538bo$537bobo3b2o$
536bobo4bobo$536b2o6bo2$489b2o$488bobo$489bo$524bo$523bobo3b2o$522bobo
4bobo$522b2o6bo5$510bo$479b2o28bobo3b2o$478bobo27bobo4bobo$479bo28b2o
6bo5$496bo$465b2o28bobo3b2o$464bobo27bobo4bobo$465bo28b2o6bo5$482bo$
451b2o28bobo3b2o$450bobo27bobo4bobo$451bo28b2o6bo$432b2o$431bobo$432bo
2$468bo$467bobo3b2o$466bobo4bobo$466b2o6bo5$422b2o30bo$421bobo29bobo3b
2o$422bo29bobo4bobo$452b2o6bo5$408b2o30bo$407bobo29bobo3b2o$408bo29bob
o4bobo$438b2o6bo5$426bo$395b2o28bobo3b2o$394bobo27bobo4bobo$395bo28b2o
6bo5$412bo$411bobo3b2o$410bobo4bobo$410b2o6bo3$386b2o$385bobo$386bo11b
o$397bobo3b2o$396bobo4bobo$396b2o6bo3$372b2o$371bobo$372bo11bo$383bobo
3b2o$382bobo4bobo$382b2o6bo4$359b2o$358bobo9bo$359bo9bobo3b2o$368bobo
4bobo$368b2o6bo5$346b2o8bo$345bobo7bobo3b2o$346bo7bobo4bobo$354b2o6bo
2$329b2o$328bobo$329bo$342bo$341bobo3b2o$340bobo4bobo$340b2o6bo4$317b
2o$316bobo9bo$317bo9bobo3b2o$326bobo4bobo$326b2o6bo$300b2o$299bobo$
300bo2$314bo$313bobo3b2o$312bobo4bobo$312b2o6bo5$290b2o8bo$289bobo7bob
o3b2o$290bo7bobo4bobo$298b2o6bo4$275b2o$274bobo9bo$275bo9bobo3b2o$284b
obo4bobo$284b2o6bo3$260b2o$259bobo$260bo11bo$271bobo3b2o$270bobo4bobo$
270b2o6bo5$258bo$249b2o6bobo3b2o$248bobo5bobo4bobo$249bo6b2o6bo5$244bo
$235b2o6bobo3b2o$234bobo5bobo4bobo$235bo6b2o6bo4$219b2o$218bobo9bo$
219bo9bobo3b2o$228bobo4bobo$228b2o6bo5$216bo$215bobo3b2o$214bobo4bobo$
214b2o6bo2$209bo$208bobo$209b2o4$210bo$209bobo$208bobo$208b2o5$201bo$
200bobo$201b2o4$202bo$201bobo$200bobo$200b2o5$193bo$192bobo$193b2o$
247b2o$204b2o40bobo$203bobo41bo$194bo9bo$193bobo$192bobo$192b2o5$185bo
$184bobo$185b2o4$186bo11b2o42b2o$185bobo9bobo41bobo$184bobo11bo43bo$
184b2o5$177bo$176bobo$177b2o3$189b2o$178bo9bobo$177bobo9bo$176bobo$
176b2o5$169bo$168bobo$169b2o4$170bo$169bobo$168bobo$168b2o15b2o$184bob
o$185bo3$161bo$160bobo$161b2o6$176b2o$175bobo$176bo!
Next I'm going to work on making another 1G seed that ignites the blinker fuses for stopping the tape reader.
Edit 2:
I just realized that one of the blinker fuses for stopping the tape reader runs into the puffer behind it. This new setup fixes it, and with one less fuse:
Code: Select all
x = 1307, y = 631, rule = B3/S23
67$26b5o$25bo4bo$30bo$25bo3bo$27bo65$1243b6o$1242bo5bo$1248bo$1242bo4b
o$1244b2o$1172bob2o$1171b2obobo67b5o$1176bob3ob3ob3ob3ob3ob3ob3ob3ob3o
b3ob3ob3ob3ob3ob3ob3o2b7o$1171b2obobo66bob3ob2o$1172bob2o72b2o3$1237b
6o$1236bo5bo3b5o$1242bo2bo4bo$1236bo4bo8bo$1238b2o5bo3bo$1247bo5$1044b
6o$1043bo5bo182b6o$1049bo181bo5bo$1043bo4bo188bo$1045b2o184bo4bo$973bo
b2o256b2o$972b2obobo67b5o$977bob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o
b3ob3ob3o2b7o$972b2obobo66bob3ob2o$973bob2o72b2o3$1038b6o$1037bo5bo3b
5o$1043bo2bo4bo$1037bo4bo8bo$1039b2o5bo3bo$1048bo6$1033b6o$1032bo5bo$
1038bo$1032bo4bo$1034b2o2$1103b5o$1102bo4bo$1107bo$1102bo3bo$1104bo18$
904b5o$903bo4bo$908bo$903bo3bo$905bo48$579b2o$575b4ob2o$575b6o$576b4o$
586b4o$585bo3bo$571bo8b2o7bo$549b2o19bo8b4o2bo2bo$547bo23bo6bo3b2o$
547bo13bo17b4o2bo2bo$547bo4bo7bobo17b2o7bo$549bo4bo4b3o23bo3bo$550bo2b
2o4b3ob2o21b4o$549b2o3bo5b2o2b2o5b3o$549bo2bo8b4o6b2o$539b2o21b2o7b2o
4b6o$538b4o9b2o23bo5bo$538b2ob2o5b2ob2o29bo$540b2o7b3o24bo4bo$550bo27b
2o$608b4o152b4o38b4o$607b6o150bo3bo37bo3bo$607b4ob2o153bo5b2o34bo5b2o$
611b2o150bo2bo4bo4bo28bo2bo4bo4bo$617bo2bo156bo41bo$621bo149bo5bo35bo
5bo$608bo8bo3bo150b6o36b6o$607bo5bo4b4o$606bo7b2o167b2o40b2o$585b2o10b
o8bobo4b3o166b4o38b4o$535bobo43bo3bobo9bo4b3o2b2o5b2o166b2ob2o37b2ob2o
$536b2o43bo4b2o8bo8bob3o3bo4b4o142b3obob3ob2ob2o5b2o20b3obob3ob2ob2o5b
2o$536bo45bo5bo8b5o4bo2bo7bo3bo141bo3bo2b3o6bo25bo3bo2b3o6bo$582b2o4bo
7bo3bo5bo14bo142b2o13b2o25b2o13b2o$582b5o8b2ob3o5bo3b2o5bo2bo148b2obo
6bo31b2obo6bo$583bo2bo14bo3bo2bo4bo153bo4bob2ob2o5b2o23bo4bob2ob2o5b2o
$584bo18bo10bo153b4o10b2ob2o23b4o10b2ob2o$584bobo8b2o11bo5bo154bo12b4o
25bo12b4o$549bo35b2o10bo11b6o168b2o40b2o$548bo$548b3o210bobo5bo2bo30bo
bo5bo2bo$762b2o9bo30b2o9bo$523bobo236bo6bo3bo30bo6bo3bo$524b2o244b4o
38b4o$524bo58b4o$582bo3bo$586bo168bobo39bobo$582bo2bo170b2o40b2o$756bo
41bo$634b5o$633bo4bo$638bo8bo2bo$633bo3bo13bo97bobo39bobo$635bo11bo3bo
98b2o40b2o$634bo13b4o98bo41bo$634b2o2b2o$633bo2bob2o$634b2o8bo3b3o$
627b3o4bo9bo2b5o91bobo39bobo$626bo2bo14bob4ob2o91b2o40b2o$630bo19b2o
92bo41bo$613bobo12bo$614bo13bob2o$610b2o18bo9b2o$609bobob2o11b2obo8bo
4bo93bobo39bobo$608bo6bo12bo15bo93b2o40b2o$608bo2bob2o23bo5bo93bo41bo$
608bo5bo24b6o$609bo3bo$610bo$611b2o160bobo$774b2o$732bo12bo11bo16bo$
733bo11bo11bo$731b3o11bo11bo11b2o$731bo39bo$519b3o9b3o9b3o9b3o9b3o9b3o
9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o3b3o3b3o3b3o3b3o3b3o3b
3o7bo2bo8b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b
3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o
9b3o9b3o9b3o9b3o$731bo39bo$731b3o11bo11bo11b2o$733bo11bo11bo$732bo12bo
11bo16bo$774b2o$611b2o160bobo$610bo$609bo3bo$608bo5bo24b6o$608bo2bob2o
23bo5bo93bo41bo$608bo6bo12bo15bo93b2o40b2o$609bobob2o11b2obo8bo4bo93bo
bo39bobo$610b2o18bo9b2o$614bo13bob2o$613bobo12bo$630bo19b2o92bo41bo$
626bo2bo14bob4ob2o91b2o40b2o$627b3o4bo9bo2b5o91bobo39bobo$634b2o8bo3b
3o$633bo2bob2o$634b2o2b2o$634bo13b4o98bo41bo$635bo11bo3bo98b2o40b2o$
633bo3bo13bo97bobo39bobo$638bo8bo2bo$633bo4bo$634b5o$756bo41bo$582bo2b
o170b2o40b2o$586bo168bobo39bobo$582bo3bo$524bo58b4o$524b2o244b4o38b4o$
523bobo236bo6bo3bo30bo6bo3bo$762b2o9bo30b2o9bo$548b3o210bobo5bo2bo30bo
bo5bo2bo$548bo$549bo35b2o10bo11b6o168b2o40b2o$584bobo8b2o11bo5bo154bo
12b4o25bo12b4o$584bo18bo10bo153b4o10b2ob2o23b4o10b2ob2o$583bo2bo14bo3b
o2bo4bo153bo4bob2ob2o5b2o23bo4bob2ob2o5b2o$582b5o8b2ob3o5bo3b2o5bo2bo
148b2obo6bo31b2obo6bo$582b2o4bo7bo3bo5bo14bo142b2o13b2o25b2o13b2o$536b
o45bo5bo8b5o4bo2bo7bo3bo141bo3bo2b3o6bo25bo3bo2b3o6bo$536b2o43bo4b2o8b
o8bob3o3bo4b4o142b3obob3ob2ob2o5b2o20b3obob3ob2ob2o5b2o$535bobo43bo3bo
bo9bo4b3o2b2o5b2o166b2ob2o37b2ob2o$585b2o10bo8bobo4b3o166b4o38b4o$606b
o7b2o167b2o40b2o$607bo5bo4b4o$608bo8bo3bo150b6o36b6o$621bo149bo5bo35bo
5bo$617bo2bo156bo41bo$611b2o150bo2bo4bo4bo28bo2bo4bo4bo$607b4ob2o153bo
5b2o34bo5b2o$607b6o150bo3bo37bo3bo$608b4o152b4o38b4o$550bo27b2o$540b2o
7b3o24bo4bo$538b2ob2o5b2ob2o29bo$538b4o9b2o23bo5bo$539b2o21b2o7b2o4b6o
$549bo2bo8b4o6b2o$549b2o3bo5b2o2b2o5b3o$550bo2b2o4b3ob2o21b4o$549bo4bo
4b3o23bo3bo$547bo4bo7bobo17b2o7bo$547bo13bo17b4o2bo2bo$547bo23bo6bo3b
2o$549b2o19bo8b4o2bo2bo$571bo8b2o7bo$585bo3bo$586b4o$576b4o$575b6o$
575b4ob2o$579b2o48$905bo$903bo3bo$908bo$903bo4bo$904b5o18$1104bo$1102b
o3bo$1107bo$1102bo4bo$1103b5o2$1034b2o$1032bo4bo$1038bo$1032bo5bo$
1033b6o6$1048bo$1039b2o5bo3bo$1037bo4bo8bo$1043bo2bo4bo$1037bo5bo3b5o$
1038b6o3$973bob2o72b2o$972b2obobo66bob3ob2o$977bob3ob3ob3ob3ob3ob3ob3o
b3ob3ob3ob3ob3ob3ob3ob3ob3o2b7o$972b2obobo67b5o$973bob2o256b2o$1045b2o
184bo4bo$1043bo4bo188bo$1049bo181bo5bo$1043bo5bo182b6o$1044b6o5$1247bo
$1238b2o5bo3bo$1236bo4bo8bo$1242bo2bo4bo$1236bo5bo3b5o$1237b6o3$1172bo
b2o72b2o$1171b2obobo66bob3ob2o$1176bob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o
b3ob3ob3ob3ob3o2b7o$1171b2obobo67b5o$1172bob2o$1244b2o$1242bo4bo$1248b
o$1242bo5bo$1243b6o65$27bo$25bo3bo$30bo$25bo4bo$26b5o!
Edit 3:
1G seed for igniting the blinker fuses:
Code: Select all
x = 477, y = 733, rule = B3/S23
58$137b2o$137bo$135bobo12bo$135b2o11bobo$149b2o$154bo$153bobo$153b2o4$
153bo$152bobo$153bobo$154b2o$141b2o$141bobo$143bo$143b2o23$334bo$333bo
bo$334b2o10$316bo6b2o$315bobo4bobo$316b2o3bobo$322bo7$135bo$134bobo$
135b2o$297bo6b2o$296bobo4bobo$297b2o3bobo$303bo4$359bo$358bobo$117bo6b
2o232b2o$116bobo4bobo$117b2o3bobo151bo$123bo151bobo$276b2o5$50bo$49bob
o$48bobo$48b2o293bo$98bo6b2o235bobo$97bobo4bobo235b2o$98b2o3bobo$104bo
182bo$281b2o3bobo27bo$280bobo4bobo25bobo$281bo6b2o25b2o$160bo$159bobo$
159b2o2$252b2o$252bo2bo$254b2o7$302b3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob
3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o$144bo$143bobo$143b2o$252b2o$
88bo162bobo$82b2o3bobo27bo134bo$81bobo4bobo25bobo$82bo6b2o25b2o14$103b
3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob
3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob
3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob
3ob3ob3ob3ob3ob3o172$61b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o
9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o9b3o172$103b3ob3ob3ob3ob3o
b3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob
3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob
3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob
3o14$82bo6b2o25b2o$81bobo4bobo25bobo$82b2o3bobo27bo134bo$88bo162bobo$
252b2o$143b2o$143bobo$144bo$302b3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o
b3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3ob3o7$254b2o$252bo2bo$252b2o2$159b2o$
159bobo$160bo$281bo6b2o25b2o$280bobo4bobo25bobo$281b2o3bobo27bo$104bo
182bo$98b2o3bobo$97bobo4bobo235b2o$98bo6b2o235bobo$48b2o293bo$48bobo$
49bobo$50bo5$276b2o$123bo151bobo$117b2o3bobo151bo$116bobo4bobo$117bo6b
2o232b2o$358bobo$359bo4$303bo$297b2o3bobo$296bobo4bobo$297bo6b2o$135b
2o$134bobo$135bo7$322bo$316b2o3bobo$315bobo4bobo$316bo6b2o10$334b2o$
333bobo$334bo23$143b2o$143bo$141bobo$141b2o$154b2o$153bobo$152bobo$
153bo4$153b2o$153bobo$154bo$149b2o$135b2o11bobo$135bobo12bo$137bo$137b
2o!
The next step is actually making the blinker fuse for building the tape reader and constructor, and after that programming the constructor.
Edit 4:
An assortment of fuse segments compiled from the contents of this thread:
1 - Fuse ignition
2 - Normal fuse
3 - Parity changing MWSS
4 - Parity preserving MWSS
5 - Normal to fast fuse
6 - Fast fuse segment
7 - Fast to normal fuse
8 - Normal to slow fuse
9 - Slow fuse segment
10 - Slow to normal fuse
Code: Select all
x = 112, y = 243, rule = B3/S23
16$20b6o2b3ob3ob3ob3o26$24b3ob3ob3ob3o27$17b3ob3ob3ob3o3b3o2b3ob3ob3o
10b3o2b3ob3ob3o9b3ob3ob3o26$15b3ob3ob3ob3o3b3o2b3ob3ob3o10b3o2b3o3b3o
2b3ob3ob3ob3ob3ob3ob3ob3ob3o23$20b3o2b3o3b3ob3o24$20b3ob3o2b3o3b3ob3o
22$19b3ob3o2b3o3b3ob3ob3o23$23b3o3b3o5b3ob3o25$19b3o3b3o5b3ob3o20$18b
3o3b3o5b3ob3o!
Next, I'm going to try and write a script to generate random fuses using these segments and test to see if they are useful for construction.
Edit 5:
I wrote a script that can make a fuse given the number of each segment, but I haven't added a random generator for it yet:
Code: Select all
# Script for creating a blinker fuse for the 1xN spaceship project
#import golly
import golly as g
#define fuse segments
n2n = [g.parse("3ob3ob3o!"),12,0]
n2f = [g.parse("3o2b3o3b3o!"),15,0]
f2f = [g.parse("3ob3o2b3o3b3o!"),19,0]
f2n = [g.parse("3ob3o2b3o3b3ob3o!"),23,0]
n2s = [g.parse("3o3b3o5b3o!"),18,0]
s2s = [g.parse("3o3b3o5b3o!"),18,0]
s2n = [g.parse("3o3b3o5b3o!"),18,0]
fn = [g.parse("3ob3ob3ob3o3b3o2b3ob3ob3o10b3o2b3o3b3o2b3ob3ob3ob3ob3ob3ob3ob3o!"),92,0]
fp = [g.parse("3ob3ob3ob3o3b3o2b3ob3ob3o10b3o2b3ob3ob3o9b3ob3o!"),77,0]
ni = [g.parse("6o2b3ob3ob3o!"),20,0]
target = [g.parse("$32bo$31bobo$31bobo$32bo17$3o17$32bo$31bobo$31bobo$32bo!"),215,-21]
#function for fuse descriptor -> fuse segment list
def segList(descriptor):
#descriptor: [normal,slow,fast,slowTrans,fastTrans,changeParity]
#create output list
out = []
#normal fuse
for i in range(0,descriptor[0]):
out.append(n2n)
#slow fuse
if descriptor[1] > 0:
out.append(n2s)
for i in range(0,descriptor[1]):
out.append(s2s)
out.append(s2n)
#fast fuse
if descriptor[2] > 0:
out.append(n2f)
for i in range(0,descriptor[2]):
out.append(f2f)
out.append(f2n)
#slow transitions
for i in range(0,descriptor[3]):
out.append(n2s)
out.append(s2n)
#fast transitions
for i in range(0,descriptor[4]):
out.append(n2f)
out.append(f2n)
#fire
if descriptor[5]:
out.append(fp)
else:
out.append(fn)
#return output
return out
#function for segment list -> combined segment
def joinSegs(segments):
#create and select layer
g.addlayer()
g.setlayer(g.numlayers() - 1)
#x position
x = 0
#loop through segments
for s in segments:
#add segment
g.putcells(s[0],x,s[2])
#update x
x += s[1]
#get fuse
out = g.getcells([0,-100,x,200])
#remove layer
g.dellayer()
#return fuse
return [out,x]
#function for building an operation test
def buildOpTest(opDesc):
#create segments list
segs = [ni];
#add operation segments
for f in opDesc:
segs.extend(segList(f))
#add target
segs.append(n2n)
segs.append(target)
#combine and return
return joinSegs(segs)
#test
test = [];
while int(g.getstring("1:add op | 2:build")) == 1:
test.append([int(g.getstring("#n")),int(g.getstring("#s")),int(g.getstring("#f")),int(g.getstring("#st")),int(g.getstring("#ft")),int(g.getstring("1:fire | 2:fire + parity")) == 2])
g.putcells(buildOpTest(test)[0],-1000,-1000)
Edit 6:
This script takes a target number and a list of "segments", and finds a representation of the target in the form a*x + b*y + c*z... where a, b, c... are the segment numbers, and x, y, z... are returned. This should be helpful for creating a fuse with a specific delay/length from a set of fuse segments. I don't really know what this would be called, so I just used a placeholder name for the function:
Code: Select all
def theThing(target,segments):
#find a representation of the target number
#in the form of a*x + b*y + c*z...
#create work list
work = [[0,[]]]
#loop through segments
for s in segments:
#new work list
newWork = []
#loop through work list
for w in work:
#preset
total = w[0]
count = 0
#loop
while total <= target:
#create updated work element
newInfo = w[1].copy()
newInfo.append([s,count])
newWorkElement = [total,newInfo]
#check if found
if total == target:
#found, return
return newWorkElement[1]
#add to work list
newWork.append(newWorkElement)
#update
total += s
count += 1
#update work list
work = newWork
#test
print(theThing(int(input("target: ")),[20,16,6]))
Edit 7:
A slight modification of my previous script so that it can use negative numbers:
Code: Select all
def theThing(target,segments):
#find a representation of the target number
#in the form of a*x + b*y + c*z...
#segments should be in order:
#[most negative...least negative, most positive...least positive]
#create work list
work = [[0,[]]]
#loop through segments
for s in segments:
#new work list
newWork = []
#loop through work list
for w in work:
#preset
total = w[0]
count = 0
#loop
while total <= target and total > -200:
#create updated work element
newInfo = w[1].copy()
newInfo.append([s,count])
newWorkElement = [total,newInfo]
#check if found
if total == target:
#found, return
return newWorkElement[1]
#add to work list
newWork.append(newWorkElement)
#update
total += s
count += 1
#update work list
work = newWork
print("searching...")
for i in range(0,300):
if theThing(i,[-34,40,26,6]) == None:
if i % 2 == 0:
print(" " + str(i))
#else:
# print(i)
print("done!")
#print(theThing(int(input("target: ")),[20,16,6]))
Currently, I am measuring fuse segments based on how many generations of delay they add between fired MWSSs, and these segments allow for all even delays to be reached:
Code: Select all
x = 104, y = 235, rule = B3/S23
22$43b3ob3ob3ob3o32$18b3o2b3o3b3ob3ob3o2b3o3b3ob3ob3o2b3o3b3ob3ob3ob3o
b3ob3o35$37b3ob3o7b3ob3ob3ob3ob3ob3ob3o64$33b3o2b3o3b3ob3ob3o2b3o3b3ob
3ob3ob3ob3ob3o59$15b3o2b3o3b3ob3ob3o2b3o3b3ob3ob3o2b3o3b3ob3ob3o2b3o3b
3ob3ob3o!
If a segment with an odd delay can be found, that would allow for any delay between MWSSs.
I'm going to look for an odd delay for a little while longer, then start working on a script to search for push/pull/fire operations.
Edit 8:
This script will generate a fuse that fires two MWSS with any even delay:
Code: Select all
# Script for creating blinker fuses for the 1xN spaceship project
#import golly
import golly as g
#define fuse segments
n2n = [g.parse("3ob3ob3o!"),12]
n2f = [g.parse("3o2b3o3b3o!"),15]
f2f = [g.parse("3ob3o2b3o3b3o!"),19]
f2n = [g.parse("3ob3o2b3o3b3ob3o!"),23]
fn = [g.parse("3ob3ob3ob3o3b3o2b3ob3ob3o10b3o2b3o3b3o2b3ob3ob3ob3ob3ob3ob3ob3o!"),92]
fp = [g.parse("3ob3ob3ob3o3b3o2b3ob3ob3o10b3o2b3ob3ob3o9b3ob3o!"),77]
nd = [g.parse("3ob3o7b3ob3ob3ob3ob3ob3ob3ob3ob3ob3o!"),50]
ni = [g.parse("6o2b3ob3ob3o!"),20]
#function for fuse descriptor -> fuse segment list
def segList(descriptor):
#descriptor: [normal,fastTrans,twoFast,negativDelay,parity]
#create output list
out = [ni]
#fire
if descriptor[4]:
out.append(fp)
else:
out.append(fn)
out.append(n2n)
#normal fuse
for i in range(0,descriptor[0]):
out.append(n2n)
#fast transitions
for i in range(0,descriptor[1]):
out.append(n2f)
out.append(f2n)
out.append(n2n)
#two fast fuse
for i in range(0,descriptor[2]):
out.append(n2f)
out.append(f2f)
out.append(f2f)
out.append(f2n)
out.append(n2n)
#negative delay
for i in range(0,descriptor[3]):
out.append(nd)
#add end fire (test)
out.append(fn)
out.append(n2n)
#return output
return out
#function for segment list -> combined segment
def joinSegs(segments):
#create and select layer
g.addlayer()
g.setlayer(g.numlayers() - 1)
#x position
x = 0
#loop through segments
for s in segments:
#add segment
g.putcells(s[0],x,0)
#update x
x += s[1]
#get fuse
out = g.getcells([0,-100,x,200])
#remove layer
g.dellayer()
#return fuse
return [out,x]
def theThing(target,segments):
#find a representation of the target number
#in the form of a*x + b*y + c*z...
#segments should be in order:
#[most negative...least negative, most positive...least positive]
#create work list
work = [[0,[]]]
#loop through segments
for s in segments:
#new work list
newWork = []
#loop through work list
for w in work:
#preset
total = w[0]
count = 0
#loop
while total <= target and total > -200:
#create updated work element
newInfo = w[1].copy()
newInfo.append([s,count])
newWorkElement = [total,newInfo]
#check if found
if total == target:
#found, return
return newWorkElement[1]
#add to work list
newWork.append(newWorkElement)
#update
total += s
count += 1
#update work list
work = newWork
#build a fuse with a specified generation delay
def buildFuse(delay,parity):
#account for baseline separation
delay += 14
#account for parity fire timing differences
if parity:
delay -= 10
#find the number of segments
info = theThing(delay,[-22,46,26,6])
#add blank spaces (protect against missing info)
info.append([0,0])
info.append([0,0])
info.append([0,0])
info.append([0,0])
#return nothing if that delay is impossible (with current segments)
if info == None:
g.warn("Delay " + str(delay) + " cannot be produced with current segments")
return None
#create the fuse and return it
return joinSegs(segList([info[3][1],info[2][1],info[1][1],info[0][1],parity]))
g.putcells(buildFuse(int(g.getstring("delay")),g.getstring("parity")=="1")[0],-1000,-1000)
It would be really nice to have an odd delay fuse segment, but if I can't find one I'm just going to start working on an operation search script.
Edit 9:
I just realized that an odd delay fuse segment is pretty much impossible, because the entire fuse is made out of blinkers, and an odd delay would mean they would all be in the wrong phase. It might be possible that there are equivalent fuses that work in the other phase (with the blinkers perpendicular to the direction of travel instead of parallel), but it would be a lot of work, and the capability to alter parity should make up for that.
Edit 10:
The finished search script, which takes the results of the previous search from the file "search.txt", finds all operations at the next depth, and rewrites them back to the file:
Code: Select all
# Script for creating blinker fuses for the 1xN spaceship project
#import golly
import golly as g
#define fuse segments
n2n = [g.parse("3ob3ob3o!"),12]
n2f = [g.parse("3o2b3o3b3o!"),15]
f2f = [g.parse("3ob3o2b3o3b3o!"),19]
f2n = [g.parse("3ob3o2b3o3b3ob3o!"),23]
fn = [g.parse("3ob3ob3ob3o3b3o2b3ob3ob3o10b3o2b3o3b3o2b3ob3ob3ob3ob3ob3ob3ob3o!"),92]
fp = [g.parse("3ob3ob3ob3o3b3o2b3ob3ob3o10b3o2b3ob3ob3o9b3ob3o!"),77]
nd = [g.parse("3ob3o7b3ob3ob3ob3ob3ob3ob3ob3ob3ob3o!"),50]
ni = [g.parse("6o2b3ob3ob3o!"),20]
tgf = [g.parse("3ob3o6b3o2b3ob3ob3o2b3ob3o3b3o4b3ob3ob3ob3o4b3o5b3o8b3o2b3ob3ob3o4b3o2b3o2b3o3b3o2b3o!"),131]
target = g.parse("bo$obo$obo$bo34$bo$obo$obo$bo!")
#function for fuse descriptor -> fuse segment list
def segList(descriptor):
#descriptor: [normal,fastTrans,twoFast,negativDelay,parity]
#create output list
out = []
#fire
if descriptor[4]:
out.append(fp)
else:
out.append(fn)
out.append(n2n)
#normal fuse
for i in range(0,descriptor[0]):
out.append(n2n)
#fast transitions
for i in range(0,descriptor[1]):
out.append(n2f)
out.append(f2n)
out.append(n2n)
#two fast fuse
for i in range(0,descriptor[2]):
out.append(n2f)
out.append(f2f)
out.append(f2f)
out.append(f2n)
out.append(n2n)
#negative delay
for i in range(0,descriptor[3]):
out.append(nd)
#return output
return out
#function for segment list -> combined segment
def joinSegs(segments):
#create and select layer
g.addlayer()
g.setlayer(g.numlayers() - 1)
#x position
x = 0
#loop through segments
for s in segments:
#check for y
y = 0
if len(s) == 3:
y = s[2]
#add segment
g.putcells(s[0],x,y)
#update x
x += s[1]
#get fuse
out = g.getcells([0,-100,x,200])
#remove layer
g.dellayer()
#return fuse
return [out,x]
def theThing(target,segments):
#find a representation of the target number
#in the form of a*x + b*y + c*z...
#segments should be in order:
#[most negative...least negative, most positive...least positive]
#create work list
work = [[0,[]]]
#loop through segments
for s in segments:
#new work list
newWork = []
#loop through work list
for w in work:
#preset
total = w[0]
count = 0
#loop
while total <= target and total > -200:
#create updated work element
newInfo = w[1].copy()
newInfo.append([s,count])
newWorkElement = [total,newInfo]
#check if found
if total == target:
#found, return
return newWorkElement[1]
#add to work list
newWork.append(newWorkElement)
#update
total += s
count += 1
#update work list
work = newWork
#build a fuse with a specified generation delay
def buildFuse(delay,parity):
#account for baseline separation
delay += 14
#account for parity fire timing differences
if parity:
delay -= 10
#find the number of segments
info = theThing(delay,[-22,46,26,6])
#add blank spaces (protect against missing info)
info.append([0,0])
info.append([0,0])
info.append([0,0])
info.append([0,0])
#return nothing if that delay is impossible (with current segments)
if info == None:
g.warn("Delay " + str(delay) + " cannot be produced with current segments")
return None
#create the fuse and return it
return joinSegs(segList([info[3][1],info[2][1],info[1][1],info[0][1],parity]))
#build an operation
def buildOp(op):
#convert into fuses
segs = [ni]
for s in op:
segs.append(buildFuse(s[0],s[1]))
#add final fire and target gen
#segs.append(buildFuse(150,False))
segs.append(fn)
segs.append(n2n)
#segs.append(buildFuse(300,False))
#segs.append(tgf)
#join and return
return joinSegs(segs)
#get the salvo from a fuse
def getSalvo(fuse):
#create and select layer
g.addlayer()
g.setlayer(g.numlayers() - 1)
#add fuse
g.putcells(fuse[0],0,0)
#evolve
g.run(10000)
#select and delete fuse ash
g.select([-100,-100,fuse[1]+200,200])
g.clear(0)
#select and store salvo
g.select([-100,-100,10000,200])
g.shrink()
sel = g.getselrect()
salvo = g.getcells(sel)
g.clear(0)
#move salvo back to 0,0
salvo = g.transform(salvo,-sel[0],-sel[1])
#remove layer
g.dellayer()
#return
return [salvo,sel[2]]
#find all unique extentions of an operation
def explore(op,parity):
#create and select layer
g.addlayer()
g.setlayer(g.numlayers() - 1)
#op extentions
extentions = []
#delay
delay = 46
#duplicate result count
duplicates = 0
#result hash list
resHashes = []
#loop
while duplicates < 16:
#create extention
ext = op.copy()
ext.append([delay,parity])
#get op salvo
salvo = getSalvo(buildOp(ext))
#add target
g.putcells(salvo[0],-salvo[1])
if g.getcell(-1,0) == 1:
salvoNew = g.evolve(salvo[0],2)
g.select([-1000000,0,1,1])
g.clear(1)
g.putcells(salvoNew,-salvo[1]-1,2)
g.putcells(target,12,2)
#get resulting ash (minus any gliders)
g.run(10000)
#get ash hash
ashHash = g.hash([-100,-200,1000,400])
#clear layer
g.select([-1000000,0,1,1])
g.clear(1)
#check for duplicate
if resHashes.count(ashHash) == 0:
resHashes.append(ashHash)
extentions.append(ext)
else:
duplicates += 1
#update delay
delay += 2
#remove layer
g.dellayer()
#return
return extentions
#evaluate a collection of operations
def evaluate(ops):
#create and select layer
g.addlayer()
g.setlayer(g.numlayers() - 1)
#position-dependent hashes
posHashes = []
#position-independent hashes
confHashes = []
#output list
out = []
#notable ops
report = []
#loop through ops
for op in ops:
#get op salvo
salvo = getSalvo(buildOp(op))
#add target
g.putcells(salvo[0],-salvo[1])
if g.getcell(-1,0) == 1:
salvoNew = g.evolve(salvo[0],2)
g.select([-1000000,0,1,1])
g.clear(1)
g.putcells(salvoNew,-salvo[1]-1,2)
g.putcells(target,12,2)
#get resulting ash (minus any gliders)
g.run(10000)
#get position hash
posHash = g.hash([-100,-200,1000,400])
#check for gliders
gliders = not (str(g.getcells([-100,-200,1000,400])) == str(g.getcells(g.getrect())))
#get position independent hash
g.select([-100,-200,1000,400])
g.clear(1)
if g.getrect() != []:
confHash = g.hash(g.getrect())
#clear layer
g.select([-1000000,0,1,1])
g.clear(1)
#evaluate
if confHashes.count(confHash) > 0:
if gliders or posHashes.count(posHash) == 0:
#notable, report
confHashes.append(confHash)
posHashes.append(posHash)
report.append(op)
out.append(op)
else:
#non-duplicate
confHashes.append(confHash)
posHashes.append(posHash)
out.append(op)
#remove layer
g.dellayer()
#return
return [out,report]
#call explore on a list of ops with and without parity
def exploreAll(ops):
#output list
out = []
#loop through ops
for op in ops:
#explore op with and without parity change
out.extend(explore(op,False))
out.extend(explore(op,True))
#return
return out
#returns the lines of a file as a list
def readListFile(name):
#open the file
file = open(name,"r")
#read and split lines
lines = file.read().split("\n")
#close the file
file.close()
#return
return lines
#write the given list of lines to a file
def writeListFile(name,lines):
#open the file
file = open(name,"w")
#write the lines
for l in lines:
file.write(str(l)+"\n")
#close the file
file.close()
#search the file, and evaluate
def search(wFile):
#get the file contents
lines = readListFile(wFile)
#remove excess whitespace
lines.pop()
#get the depth
depth = int(lines.pop(0))
#convert the rest of the lines into ops
ops = []
for l in lines:
ops.append(stringToOp(l))
#explore the ops
ops = exploreAll(ops)
afterExplore = len(ops)
#evaluate them
ops = evaluate(ops)
check = ops[1]
ops = ops[0]
#rebuild file
newLines = [depth + 1]
for o in ops:
newLines.append(opToString(o))
#update file
writeListFile(wFile,newLines)
#output stats
g.note("Searched depth: " + str(depth) + "\nStarting ops: " + str(len(lines)) + "\n After explore: " + str(afterExplore) + "\nAfter evaluate: " + str(len(ops)) + "\nOps of interest: " + str(check))
#convert a string into an op descriptor
def stringToOp(string):
#output list
out = []
#current segment
seg = []
#split string
elements = string.split(",")
#loop through elements
for e in elements:
if e == "":
continue
if len(seg) == 0:
seg.append(int(e))
elif len(seg) == 1:
if e == "True":
seg.append(True)
else:
seg.append(False)
out.append(seg)
seg = []
#return
return out
#convert an op descriptor into a string
def opToString(op):
#output string
out = ""
#loop through segments
for s in op:
#loop through segment
for p in s:
out += str(p)
out += ","
#return
return out
search("search.txt")
I'm going to start running it, but there is a large chance that the script has a lot of bugs.