With Hersrch it's often easiest to start with a "template" pattern that shows the Herschel conduits that need to be connected:
Code: Select all
#CXRLE Pos=-31,-178 x = 383, y = 361, rule = B3/S23 54b2o$53bo2bo$54b2o7$92b2o$59b2o31b2o$59bo$57b3o$90b2o40b2o$90b2o40b2o 5b2o$77b2o60b2o$78bo38bo$78bobo36b3o$79b2o39bo16b2o$75b2o42b2o16b2o$ 40b2o33b2o66b2o162bo$41bo101b2o160b3o$41bobo15b2o243bo$42b2o15b2o243b 2o$318b2o$289b2o27b2o$289bo$88b2o200b3o$88b2o202bo31b2o$81b2o241b2o$ 80bo2bo15b2o219b2o$81b2o15bo2bo218b2o$98bobo23b2o$99bo20bo3b2o165b2ob 2o$119bobo24b2o143bo3bo$60b2o56bobo14b3o8bo109b2o34b3o30b2o$60bobo55bo 16bo8bobo44bo39bo24b2o32bobo32b2o$62bo54b2o15b2o8b2o45b3o35b3o58b2o$ 62b2o130bo33bo$81b2o110b2o33b2o24b2o$81b2o171b2o$174bo42bo23b2o$155b2o 17b3o38b3o24bo$44b2o102b2o6bo20bo36bo27bobo$43bobo102bo6bo20b2o11b2o 23b2o27b2o46bo$43bo102bobo6b2o32b2o48b2o50b3o$42b2o102b2o91b2o53bo$41b o251b2o$41b3o$44bo88b2o$43b2o87bobo$132bo25b2o66b2o$131b2o25b2o65bo2bo $226b2o24b2o$201b2o49b2o29b2o$202bo42b2o36b2o$41b2o92b2o62b3o8b2o17b2o 13bo2bo$41b2o91bobo62bo11bo17bo15b2o$65b2o67bo4b2o67b3o19b3o39bo$65bob o65b2o5bo27b2o38bo23bo38bobo46b2o$67bo69b3o5bo23bo101b2o24b2o21b2o24b 2o$67b2o68bo6bobo19b3o20b2o89b2o16bo15b2o31bo$145bo20bo22bo90bo14b3o 16b2o31bobo$190b3o88bo13bo52bobo$192bo87b2o67bo3b2o$207bob2o34b2o69b2o 35b2o$207b2obo34b2o62b2o5b2o$51b2o256b2o$52bo163b2o$52b3o161b2o9$184bo $182b3o$181bo26b2o$181b2o26bo$166b2o41bobo$167bo42b2o$167bobo$168b2o 10bo$179bobo$179bobo$11bo168bo4b2o$11b3o154b2o15bobo$14bo152bobo17bo$ 13b2o152bo19b2o$166b2o25b2o88bo$193bo49bo37b3o$191bobo10b2o35b3o36bo$ 191b2o11b2o34bo39b2o$240b2o$4bo351b2o$4b3o23b2o145b2o135b2o14bo25bo$7b o21bo2bo144b2o30b2o78b2o24bo14b3o21bobo$6b2o22b2o177b2o79bo13b2o6b3o 18bo20b2o$205b2o83bobo11b2o6bo19b2o$205b2o84b2o$362b2o$249b2o112bo$ 211b2o36b2o112bobo$211b2o13b2o136b2o$225bobo$16b2o147b2o58bo96b2o$16b 2o148bo57b2o10b2o84b2o$166bobo68bo$167b2o65b3o9b2o32b2o$234bo11bo20b2o 11b2o$247bo20bo$246b2o17b3o$265bo53b2o32b2o$319bo20b2o11b2o$284b2o14b 2o3b2o13bo20bo$8b2o275bo15bo3bo13b2o17b3o$3b2o2bo2bo271b3o13b3o5b3o29b o$3bo4bobo271bo15bo9bo$2obo5bo347b2o$bobob2o351bo$o2bo2bo161b2o15b2o 118bo49b3o$2o2bo4bo158b2o15bobo105bo11b3o47bo$5b5o150b2o25bo103b3o14bo $161bo25b2o86bo14bo16b2o52bo$4bob2o153bobo111b3o12b2o69b3o$4b2obo154b 2o114bo52bo32bo$277b2o50b3o13bo17b2o$262b2o64bo16b3o$262b2o5b2o57b2o 18bo$181bo51bo35b2o7b2o67b2o$179b3o51b3o7b2o33b2o17b2o$178bo57bo6bo3b 2o48b2o$178b2o20bo34b2o4bobo4bo18b2o$184bo15b3o38b2o5bobo16b2o$182b3o 18bo45b2o22b2o$181bo20b2o11b2o56b2o$181b2o32b2o120b2o$294b2o41b2o$294b o19b2o$296bo16bobo59b2o$295b2o16bo61b2o$291b2o19b2o10b2o$184b2o105bo 33bo$165b2o17b2o106b3o27b3o9b2o$165b2o127bo27bo11bo19b2o$335bo17bobo$ 334b2o17bo$164b2o186b2o$165bo$162b3o12b2o50b2o$162bo14bo16b2o34bo$178b 3o14bo31b3o3bob2o$180bo11b3o20b2o10bo2b4ob2o44b2o$192bo22bo14bo50b2o$ 216b3o13b2ob2o2b2o6b2o$218bo14bobo4bo6bobo$233bo2b4o9bo$234bobo2bobo7b 2o113b2o$235bo4b2o123bo$362b3o$362bo3$261b2o$260bobo$260bo18b2obo$259b 2o18b2ob3o$285bo$279b2ob3o$280bobo$280bobo$281bo5$269b2o$269b2o9$98b2o $65b2o31b2o$65bo$63b3o$96b2o40b2o$96b2o40b2o5b2o$83b2o60b2o$84bo38bo$ 84bobo36b3o$85b2o39bo16b2o$81b2o42b2o16b2o$46b2o33b2o66b2o162bo$47bo 101b2o160b3o$47bobo15b2o243bo$48b2o15b2o243b2o$324b2o$295b2o27b2o$295b o$94b2o200b3o$94b2o202bo31b2o$87b2o241b2o$86bo2bo15b2o219b2o$87b2o15bo 2bo218b2o$104bobo23b2o$105bo20bo3b2o165b2ob2o$125bobo24b2o143bo3bo$66b 2o56bobo14b3o8bo109b2o34b3o30b2o$66bobo55bo16bo8bobo44bo39bo24b2o32bob o32b2o$68bo54b2o15b2o8b2o45b3o35b3o58b2o$68b2o130bo33bo$87b2o110b2o33b 2o24b2o$87b2o171b2o$180bo42bo23b2o$161b2o17b3o38b3o24bo$50b2o102b2o6bo 20bo36bo27bobo$49bobo102bo6bo20b2o11b2o23b2o27b2o46bo$49bo102bobo6b2o 32b2o48b2o50b3o$48b2o102b2o91b2o53bo$47bo251b2o$47b3o$50bo88b2o$49b2o 87bobo$138bo25b2o66b2o$137b2o25b2o65bo2bo$232b2o24b2o$207b2o49b2o29b2o $208bo42b2o36b2o$47b2o92b2o62b3o8b2o17b2o13bo2bo$47b2o91bobo62bo11bo 17bo15b2o$71b2o67bo4b2o67b3o19b3o39bo$71bobo65b2o5bo27b2o38bo23bo38bob o46b2o$73bo69b3o5bo23bo101b2o24b2o21b2o24b2o$73b2o68bo6bobo19b3o20b2o 89b2o16bo15b2o31bo$151bo20bo22bo90bo14b3o16b2o31bobo$196b3o88bo13bo52b obo$198bo87b2o67bo3b2o$213bob2o34b2o69b2o35b2o$213b2obo34b2o62b2o5b2o$ 57b3o255b2o$58bo163b2o$58b3o161b2o9$190bo$188b3o$187bo26b2o$187b2o26bo $172b2o41bobo$173bo42b2o$173bobo$174b2o10bo$185bobo$185bobo$17bo168bo 4b2o$17b3o154b2o15bobo$20bo152bobo17bo$19b2o152bo19b2o$172b2o25b2o88bo $199bo49bo37b3o$197bobo10b2o35b3o36bo$197b2o11b2o34bo39b2o$246b2o$10bo 351b2o$10b3o23b2o145b2o135b2o14bo25bo$13bo21bo2bo144b2o30b2o78b2o24bo 14b3o21bobo$12b2o22b2o177b2o79bo13b2o6b3o18bo20b2o$211b2o83bobo11b2o6b o19b2o$211b2o84b2o$368b2o$255b2o112bo$217b2o36b2o112bobo$217b2o13b2o 136b2o$231bobo$22b2o147b2o58bo96b2o$22b2o148bo57b2o10b2o84b2o$172bobo 68bo$173b2o65b3o9b2o32b2o$240bo11bo20b2o11b2o$253bo20bo$252b2o17b3o$ 271bo53b2o32b2o$325bo20b2o11b2o$290b2o14b2o3b2o13bo20bo$14b2o275bo15bo 3bo13b2o17b3o$9b2o2bo2bo271b3o13b3o5b3o29bo$9bo4bobo271bo15bo9bo$6b2ob o5bo347b2o$7bobob2o351bo$6bo2bo2bo161b2o15b2o118bo49b3o$6b2o2bo4bo158b 2o15bobo105bo11b3o47bo$11b5o150b2o25bo103b3o14bo$167bo25b2o86bo14bo16b 2o52bo$10bob2o153bobo111b3o12b2o69b3o$10b2obo154b2o114bo52bo32bo$283b 2o50b3o13bo17b2o$268b2o64bo16b3o$268b2o5b2o57b2o18bo$187bo51bo35b2o7b 2o67b2o$185b3o51b3o7b2o33b2o17b2o$184bo57bo6bo3b2o48b2o$184b2o20bo34b 2o4bobo4bo18b2o$190bo15b3o38b2o5bobo16b2o$188b3o18bo45b2o22b2o$187bo 20b2o11b2o56b2o$187b2o32b2o120b2o$300b2o41b2o$300bo19b2o$302bo16bobo 59b2o$301b2o16bo61b2o$297b2o19b2o10b2o$190b2o105bo33bo$171b2o17b2o106b 3o27b3o9b2o$171b2o127bo27bo11bo19b2o$341bo17bobo$340b2o17bo$170b2o186b 2o$171bo$168b3o12b2o50b2o$168bo14bo16b2o34bo$184b3o14bo31b3o3bob2o$ 186bo11b3o20b2o10bo2b4ob2o44b2o$198bo22bo14bo50b2o$222b3o13b2ob2o2b2o 6b2o$224bo14bobo4bo6bobo$239bo2b4o9bo$240bobo2bobo7b2o113b2o$241bo4b2o 123bo$368b3o$368bo3$267b2o$266bobo$266bo18b2obo$265b2o18b2ob3o$291bo$ 285b2ob3o$286bobo$286bobo$287bo5$275b2o$275b2o!
If we can find a conduit that moves the lower gun's output Herschel to the upper gun's input Herschel with exactly the right timing, the LWSSes will come out in a horizontal line -- and we'll be able to string together as many guns as we want and get a longer line.
The upper gun has an input Lx Herschel at (21.-110); the spot is marked by another ghost Herschel. So we need a short string of Herschel conduits that moves a Herschel (-6, -180) between these two locations, and mirror-reflects it. The timing will have to be exactly right, too -- more about that later.
The spaceship guns in the upper half and lower half of the pattern can be separated by any even vertical distance -- odd distances don't work because the spaceship phases couldn't be synchronized (try it if you don't see why). The horizontal offset is a fixed 6 cells.
Everything else being equal, the distance between the two guns will also determine how long the connecting conduit needs to take to deliver the signal. That is, if the guns are moved two steps farther apart, the first LWSS will take four ticks longer to traverse the distance to the second LWSS's construction site... so the connecting conduit also has to take four ticks longer to deliver its output Herschel.
The -e command-line parameter gives Hersrch an equation describing which lengths and timings of Herschel conduits will work. You can use as many variables as you need. In the problem we've described above, there's really just one independent variable, the distance between the guns. Unfortunately Hersrch is very unlikely to find a compact solution without a larger search space.
In any case, a Herschel can't travel nearly as fast as an LWSS, so without a delay mechanism of some kind, the signal will never get to the upper LWSS gun in time to line the output up with the lower LWSS. We'll need to delay the lower LWSS gun for a while to give the upper gun time to trigger.
That's what the rectifiers are for. Moving a 180-degree glider reflector one diagonal step will change the reflected glider's return time by 8 ticks -- the path length changes by four ticks for both the input and the reflected gliders. We can adjust the lower gun's rectifier to make the glider path longer, giving the upper LWSS gun time to catch up.
Hersrch is currently compiled as a Windows command-line utility. To my knowledge, no one has done a Linux or Mac build. The usual way of communicating the search parameters is with a Windows batch file, like this:
Code: Select all
set x=10000 set u=1000 set t=100 set n=25 set name=connect hersrch -p 997 -o %name%.rle -f %name%.log -n %n% -s -x %x% -u %u% -t %t% -e (t=20..45,y=-18..0)L(0)[34,13]..Lx(167+8*t-4*y)[21,-110-2*y] pause
Code: Select all
Accepted 546 targets Loaded 31 components, 92 variants Prepared 17 components, 30 variants Building Aho/Corasick tree... Tree built: 693 nodes, 438 sequences, complete to depth 3 Counting component sets... Found 3107 component sets Searching... *** (5050 @ 224) VFX77 VFX176 VFX158 (l=1,p=997,t=24,u=1000,y=-13) *** (4500 @ 224) VFX158 VFX176 VFX77 (l=1,p=997,t=24,u=1000,y=-13) *** (7371 @ 2497) VL112 VFX119G VL112 VL156 VR64X (l=1,p=997,t=40,u=1000,y=-19) ... Sorting ... *** (4500) VFX158 VFX176 VFX77 (l=1,p=997,t=24,u=1000,y=-13) *** (5050) VFX77 VFX176 VFX158 (l=1,p=997,t=24,u=1000,y=-13) *** (7371) VL112 VFX119G VL112 VL156 VR64X (l=1,p=997,t=40,u=1000,y=-19) Search complete
-p 997: the Herschel circuits used have to be compatible with signals arriving 997 ticks apart. 997 is an arbitrary large prime number, so this just means that conduits with oscillators won't be used in the search.
This batch file doesn't include a -c parameter (compression setting), so conduits can be used even if they're very slow to recover. If input Herschels will be entering the track quickly, say every 200 ticks, you should add a "-c 200" to the parameter string to exclude slow conduits like the standard Fx119.
-o %name%.rle: output will be written to connect.rle. Change the "set name=connect" line to write the output pattern to a different location.
-f %name%.log: the search details written to the screen will also be written to a log file, connect.log.
-n %n%: The number of conduits in the output pattern will be limited to the 25 most compact solutions (as measured by bounding box). You can change the "set n=25" line to get as many solutions as you want.
-s: forces Hersrch to run through a complete search, sort the result in order of size, and write only the smallest candidates to the output file. The RLE won't contain more than 25 results (but there are only two solutions in this case, so this setting has no effect.) Without -s the search would stop as soon as it found the first 25 solutions -- no sorting.
-x %x%: maximum allowable size of candidate patterns is 10,000 cells (100x100 or equivalent). Watch out for this parameter -- especially if you're doing searches for very long-distance connections, too small a value here will mysteriously cause Hersrch to find no solutions. Change the "set x=10000" line at the top if necessary. However, keeping this at a reasonably low value is a quick way to weed out unnecessarily long conduits.
-u %u%: maximum amount of time a conduit is allowed to take to send a Herschel to its destination. This parameter is primarily used for searching for closed circuits (usually Herschel-based guns). If you're searching for a loop with period 999, for example, you might want to limit solutions to just single-Herschel loops (in which case "set u=1000" is a good setting).
Or you might want to allow length-1998 loops with two Herschels in them, so you'd change the line to something like "set u=2000". For closed loops, the loop length will be a multiple of the -p parameter. For open-conduit searches I usually use an arbitrary large prime for the -p parameter (e.g., 997) to make sure that periodic conduits will be disallowed -- and the -u setting just needs to be bigger than the largest possible total time delay between input and output Herschels.
This can get tricky if time is one of your variables, and/or if you have a non-zero starting time -- so double-check this along with the -x setting if you're mysteriously seeing no solutions where you know there should be some.
-t %t%: this specifies the size of the Aho-Corasick tree, in kilobytes. Depending on how much memory you have and what kind of searches you're running, it may improve search time to increase this number. The default value of 1000 is a good choice, but in quick searches like this one a smaller value seems to work fine as well.
-e (t=20..45,y=-20..0)L(0)[34,13]..Lx(167+8*t-4*y)[21,-110-2*y]: This specifies the the heart of the search, the equation describing valid spacetime locations for candidate conduits' output Herschels. English translation:
"Try all combinations of variables t and y, where t is between 20 and 45 and y is between -20 and 0. Start with a Herschel rotated 90 degrees left (L) from the standard orientation, at time (0), with the center cell placed at [34, 13]. Find a series of conduits that mirror-reflects that input Herschel (Lx) and moves it to [21, -110] -- or any location directly above that point that will allow the output spaceships to line up.
"The Herschel has to arrive at the target in exactly 167+8*t-4*y ticks. For the two guns in the position shown in the template, 167 ticks would be ideal -- then the reflectors at the lower left wouldn't have to be moved, or could even be left out. The -2*y says that if the guns are moved one cell farther apart, the candidate Herschel conduit has to take two ticks longer to deliver its Herschel (to allow the lower gun's LWSS to catch up to the upper gun's new output location.) Remember that in the Hersrch universe, y increases downward, not upward...
"In practice, the distance between the guns is too far for a Herschel to travel in just 167 ticks. The reflectors can be adjusted to account for any extra time needed by the Herschel: moving a reflector out one space slows down the gun by 8 ticks. The 8*t provides the second degree of freedom needed to make the search likely to be successful."