User:Prime Raptor21/Tutorials: Randomized RLS technique

From LifeWiki
Jump to navigation Jump to search

The randomized RLS technique is a technique for finding novel technology. It has been successfully applied to 2c/4 in Life, resulting in spaceships and puffers of many periods. The technique consists of simply running spaceship searches while enabling the option in RLS to pick random choices for unknown cells. Once a search is complete, simply analyze the output ship for thin connections, and when they appear, try to remove the backend and restabilize them. Sometimes, you'll get a high-period spaceship or puffer out of it. While this technique is simple, a lot can be done to increase one's output.

Choosing a symmetry

This section only applies to 2c/4 in Life specifically.

This may sound trivial, but it's not. Asymmetry is actually the easiest to search here. I find that w12a and up work well for me, and this is where the bulk of my results come from. The difficulty with symmetric searching is that RLS tends to dump large P2 components on you, which is not helpful for thin connections.

From Sokwe: w15o has been determined to be XWSSes, XWSS flotillas, x66s, and hivenudgers. w18e has been determined to just be XWSSes.

To avoid large P2 components, one useful method is to "seed" RLS with frontends that don't often connect to large P2 components. Here are some seeds for this purpose.

x = 25, y = 5, rule = LifeHistory
25B$25B$2B3A3B3A3B3A3B3A2B$BA2BA3BA2BABA2BA3BA2BAB$4BA3BA7BA3BA4B!
x=25, y = 5, rule = LifeHistory 25B$25B$2B3A3B3A3B3A3B3A2B$BA2BA3BA2BABA2BA3BA2BAB$4BA3BA7BA3BA4B!
x = 15, y = 17, rule = LifeHistory
15B$15B$3BA7BA3B$2B3A5B3A2B$2BAB2A3B2ABA2B$3B3A3B3A3B$.2B2A5B2A2B$.13B
$2.5BA5B$2.4B3A4B$2.2B2ABAB2A2B$2.5BA5B$2.2BAB3ABA2B$3.2B5A2B$3.9B$4.
7B$3.B7.B!
x=15, y = 17, rule = LifeHistory 15B$15B$3BA7BA3B$2B3A5B3A2B$2BAB2A3B2ABA2B$3B3A3B3A3B$.2B2A5B2A2B$.13B $2.5BA5B$2.4B3A4B$2.2B2ABAB2A2B$2.5BA5B$2.2BAB3ABA2B$3.2B5A2B$3.9B$4. 7B$3.B7.B!
x = 25, y = 9, rule = LifeHistory
25B$25B$B3A4B3A3B3A4B3AB$A2BA3BA2BA3BA2BA3BA2BA$A3BA2B2ABA3BAB2A2BA3B
A$6B2A2B2AB2A2B2A6B$2A3BA13BA3B2A$7BA2B2AB2A2BA7B$B5A3B2A3B2A3B5AB!
x=25, y = 9, rule = LifeHistory 25B$25B$B3A4B3A3B3A4B3AB$A2BA3BA2BA3BA2BA3BA2BA$A3BA2B2ABA3BAB2A2BA3B A$6B2A2B2AB2A2B2A6B$2A3BA13BA3B2A$7BA2B2AB2A2BA7B$B5A3B2A3B2A3B5AB!
#C Needs at least w19o
x = 19, y = 15, rule = LifeHistory
4.11B$3.13B$2.3B3A3B3A3B$2.2BA2BA3BA2BA2B$2.2BA3BABA3BA2B$2.3B2A5B2A3B
$2.2B2A7B2A2B$2.3B3A3B3A3B$3.2B3A3B3A2B$3.13B$4.3BA3BA3B$5.2BA3BA2B$5.
9B$6.2B3A2B$6.2B3A2B!
x=19, y = 15, rule = LifeHistory 4.11B$3.13B$2.3B3A3B3A3B$2.2BA2BA3BA2BA2B$2.2BA3BABA3BA2B$2.3B2A5B2A3B $2.2B2A7B2A2B$2.3B3A3B3A3B$3.2B3A3B3A2B$3.13B$4.3BA3BA3B$5.2BA3BA2B$5. 9B$6.2B3A2B$6.2B3A2B!

Spaceship analysis

In many cases, nothing needs to be done to restabilize the frontend. For example, I originally used randomization in an attempt to find a high-clearance back V-sparker to stabilize some other spaceship backend, but one of RLS's outputs was this.

x=13, y = 99, rule = B3/S23 2bo6bo$b3o4b3o$2o2bo3bob2o$bo2bo4b3o$bo7b3o$b2o2bo3b3o$2bobo4b2o2$2bo bo$3bo3bo$6b3o$5b2o2bo$2b3o3b3o$5bo2b2o$6bob2o$2bo6bo$3bo4bo$5b3o2$8b o$7bobo$10bo$7bo2bo$6bo4bo$5b2o4b2o$5b2o2bob2o$5b2o$8bo2$4b3o2$3b2o$2b o2b2o$bobo$bobo$5b2o2b3o$8bo2bo$2b3o6bo$b4o6bo$2bo5bobo$bobo$bo4b2o$o 2b3o2bo$bo3bobobo$2b3obo3bo$2b2o3b2obo$3b4o$4bo2b5o$6b4o$6b2o2b2o$9bo 2bo$5b2ob2o2bo$3b2ob3o$2bo3b2o$2bo$b2o4b3o$b2o2b2obo$2b4o$3b3ob2o$9bo 2$6bo$6bob2o$6bob2o$6bobo$7bo$6bo$5bo$7bo$8bo$5b2obo$6bobo$8b2o$6b3o$ 5b3obo$4bo3bo$9bo$4bo3bo$3b5o2$3b2o$6b3o2$4bo3bo$3b3o$2b2obo4bo$2b3o4b 3o$2b3o4bob2o$2b3o5b3o$3b2o5b2o3$2bo5bo$b3o3b3o$2obo3bob2o$3o5b3o$b2o 5b3o$8b3o$8b2o!

Notice that there is an HWSS+half-x66 in the front, with a tagalong behind it. Note further that there is a thin connection in the tagalong. When I tried removing the back, out came a puffer!

x=12, y = 18, rule = B3/S23 2bo6bo$b3o4b3o$2o2bo3bob2o$bo2bo4b3o$bo7b3o$b2o2bo3b3o$2bobo4b2o2$2bo bo$3bo3bo$6b3o$5b2o2bo$2b3o3b3o$5bo2b2o$6bob2o$2bo6bo$3bo4bo$5b3o!


Sometimes though, more effort is required. Let's look at some of these cases, starting with this puffer.

Example puffer #1

x=20, y = 65, rule = B3/S23 9bo$8b3o$3bo4bob2o$2b3o4b3o2b3o$b2obo4b3obo2bo$b3o5b3obo3bo$2b2o5b3ob obo$9b3o3bo$5b2o2b3o2b2o$9b3ob2o$9b2o2b2o2$14bobo$11bobo2bo$10b2o4bo$ 9b2o$8b2ob4o$7bo2b2o3bo$13bobo$12b2ob2o$8b3o$8b4ob2o$10bob2o$8b2o3bob o$11b2o2bo$9b2o3bo$12bo$8b3o$7bo4bo3bo$10bobo2b3o$8bobo4bob2o$7b3ob2o 3b3o$6b2o2b2obo2b3o$7bo8b2o$7bo3b2o$7b2o$8bo$10bo$8bo6bo$8bo5b3o$8b3o 2bo2b2o$9b2o2bo2b2o$9b2ob2o2bo$11bobo3bo$14bo2bo$12bobo3bo$10bo3bobob o$10bo3bobob2o$12bo2b2ob2o$8bo7b3o$7b3o$6b2obo5b2o$6b3o4bo2bo$7b2o4bo $12bo3bo$12bob2o$11b3o2$2b3o5b2o2bo$bo2bo5bo3bo$4bo4bo$o3bo4b2obo$o3b o4b3o$4bo$bobo!

Notice the HWSS in the back. If we remove it, the entire thing blows up.

x=19, y = 63, rule = B3/S23 8bo$7b3o$2bo4bob2o$b3o4b3o2b3o$2obo4b3obo2bo$3o5b3obo3bo$b2o5b3obobo$ 8b3o3bo$4b2o2b3o2b2o$8b3ob2o$8b2o2b2o2$13bobo$10bobo2bo$9b2o4bo$8b2o$ 7b2ob4o$6bo2b2o3bo$12bobo$11b2ob2o$7b3o$7b4ob2o$9bob2o$7b2o3bobo$10b2o 2bo$8b2o3bo$11bo$7b3o$6bo4bo3bo$9bobo2b3o$7bobo4bob2o$6b3ob2o3b3o$5b2o 2b2obo2b3o$6bo8b2o$6bo3b2o$6b2o$7bo$9bo$7bo6bo$7bo5b3o$7b3o2bo2b2o$8b 2o2bo2b2o$8b2ob2o2bo$10bobo3bo$13bo2bo$11bobo3bo$9bo3bobobo$9bo3bobob 2o$11bo2b2ob2o$7bo7b3o$6b3o$5b2obo5b2o$5b3o4bo2bo$6b2o4bo$11bo3bo$11b ob2o$10b3o2$9b2o2bo$9bo3bo$8bo$8b2obo$8b3o!

So, what does the HWSS do? It simply stabilizes the engine. The kind of stabilization demonstrated here is one of the simpler ways that an engine might require stabilization. In this case, a piece of junk sticks to the engine, killing it, so we suppress it with a sparker.

Example spaceship #1

This is a very nontrivial stabilization.

x=21, y = 46, rule = B3/S23 2bo$b3o4bo$bob2o2b3o$2b3o2bob2o$2b2o4b3o$8b3o$3bo4b3o$2bo5b2o$2bo2$2b 3o$2b3o$3bo$b3o$o3bo5b3o$3b3o3bo2bo$6bo5bo$3ob4o4bo$ob2o7bo$4b5o$3b2o 2b2o$4b3obo$7bo$6b3o$3b4o$2bo5bo$7b2o$5bo2bo9b3o$3bo6b3o4bo2bo$5bo4bo 2bo6bo$3b3o10bo3bo$2b2o12bo3bo$b3o7bo2bo5bo$b3o13bobo$3bo9b2o$12bobo$ 13bo$14bo$8b2o2bobo$7bo2bobobo$8b2o3bo2$8b2o$11bo$9bobo$10bo!

If we remove the HWSS, the spaceship blows up.

x=15, y = 46, rule = B3/S23 2bo$b3o4bo$bob2o2b3o$2b3o2bob2o$2b2o4b3o$8b3o$3bo4b3o$2bo5b2o$2bo2$2b 3o$2b3o$3bo$b3o$o3bo5b3o$3b3o3bo2bo$6bo5bo$3ob4o4bo$ob2o7bo$4b5o$3b2o 2b2o$4b3obo$7bo$6b3o$3b4o$2bo5bo$7b2o$5bo2bo$3bo6b3o$5bo4bo2bo$3b3o$2b 2o$b3o7bo2bo$b3o$3bo9b2o$12bobo$13bo$14bo$8b2o2bobo$7bo2bobobo$8b2o3b o2$8b2o$11bo$9bobo$10bo!

The reason why this is nontrivial is because in this case, it doesn't appear to be possible to stop the junk from sticking to the engine. Instead, the HWSS lets the engine SURVIVE being stuck to by the junk, instead of AVOIDING being stuck to by the junk.

Example puffer #2

x=79, y = 49, rule = B3/S23 7b3o27b3o27b3o$7bo2bo3b3o20bo2bo3b3o20bo2bo3b3o$7bo6bo2bo19bo6bo2bo19b o6bo2bo$7bo5bo23bo5bo23bo5bo$8bo3b3o3bo19bo3b3o3bo19bo3b3o3bo$8b3obob ob2o20b3obobob2o20b3obobob2o$10bob3o25bob3o25bob3o$9bo29bo29bo$9b4o26b 4o26b4o$8b2ob2o25b2ob2o25b2ob2o$9bo2b2o25bo2b2o25bo2b2o$14bo29bo29bo$ 9b4obo24b4obo24b4obo$8b4o26b4o26b4o$7b3o4b4o19b3o4b4o19b3o4b4o$7bobo5b o2bo18bobo5bo2bo18bobo5bo2bo$8b3o7bo19b3o7bo19b3o7bo$8b3o3bo23b3o3bo23b 3o3bo$8b2o4bobo21b2o4bobo21b2o4bobo$13bo29bo29bo$14b4o26b4o26b4o$12b2o bo2bo23b2obo2bo23b2obo2bo$6b3o5b2o20b3o5b2o20b3o5b2o$6bo2bo2b3o21bo2b o2b3o21bo2bo2b3o$6bo9b3o17bo9b3o17bo9b3o$6bo3bo25bo3bo25bo3bo$7bo3b2o 24bo3b2o24bo3b2o$7bo5bo23bo5bo23bo5bo$8bo3bo25bo3bo25bo3bo$7b5o4bo20b 5o4bo20b5o4bo$15b3o27b3o27b3o$5b2o7b2obo17b2o7b2obo17b2o7b2obo$5b2o7b 3o18b2o7b3o18b2o7b3o$6bo8b2o19bo8b2o19bo8b2o$7bo3bo25bo3bo25bo3bo$6bo 2b2ob2o22bo2b2ob2o22bo2b2ob2o$10bo29bo29bo$9bo29bo29bo$8b3o2bo24b3o2b o24b3o2bo$2b3o2bo24b3o2bo24b3o2bo$bo2bo5b2o19bo2bo5b2o19bo2bo5b2o$4bo 2b2o25bo2b2o25bo2b2o$o3bo3b3o5bo13bo3bo3b3o19bo3bo3b3o$o3bo3bobo4b3o12b o3bo3bobo4bo14bo3bo3bobo4bo$4bo9b2obo16bo9b3o17bo9b3o$bobo10b3o14bobo 10bob2o13bobo10bob2o$14b3o28b3o27b3o$14b3o28b2o28b3o$15b2o58b2o!

The left HWSS is relatively nontrivial; preventing junk from sticking to this engine is relatively difficult, and the HWSS is not at all obvious. However, the least obvious thing here is probably realizing that there might even be a viable engine here. The connection here is a bit thicker than usual, and removing the backend causes part of the frontend to become P8 instead of P4, further hiding the possibility of a stabilization. In fact, I don't even know how I realized that this could be viable.

JLS

Due to the lack of randomness, JLS isn't as useful for randomized searching as RLS. However, it is far easier to input partial results into it. Even deterministic searching can sometimes be useful.

Example spaceship #2

x=32, y = 77, rule = B3/S23 9bo$8b3o$2b3o2b2obo$bo2bo2b3o$bo3bob3o$2o2b3ob2o$3ob3o$b2o$4bo2bo$8b2o $5b2obo$5bo2bob2o$5b2obob2o$3bo2b6o$3bo2b2o3b2o$3bo$4bo$2bob2o$2bob2o $2bo4bo$6b3o$3b2o3bo$8b2o$3bo4b2o$4b2o$2bo3bob2o$2b3o5bo$2bo3bobob2o$ 2bo$3b2o3b2o$6bo2bo$5bo2bo$7b3o$7bo$3bo4bo$2b3o3bobo$bo2b2o2bobo$b2o3b o$4b3o$3bobo$o2bo2$bo2b3o$2b6o$3b2o$7bo$bobo3bo$2b5o$2b2o$3b3o$3b2obo $3b3ob2o$7b2o$3b2ob2o$b2obob2o$b2obo3bo$2bo5b2o$bo2bo3bo$2bo5bo$2b2o4b o$3bo4bo$5bo2bo$3bo2b2o$3b3obo$3b6o$4b2o3bo$6bo2bo17b3o$6bo3bo5b3o8bo 2bo$5bo5bo3bo2bo8bo$6bo3bo4b2o2bo7bo3bo$7b3o3b3o11bo3bo$11bo2bo2bo2b4o 3bo$11bo4b3o3bo5bobo$13bobo2bo3b2o$6bo8b2o$6bo13bo$17b2o!

I noticed that hitting the back of the "bulb" in the right way would create a P8 spaceship. I was able to find a way to do so via JLS.

Example spaceship #3

x=64, y = 18, rule = B3/S23 23bo$22b3o29bo4b3o$21b2o2bo21bo5b3o3bo2bo$21bob2o13b3o5b3o3b2obo3bo$13b 3o4bo2b3ob4o7bo2bo3b2obo3b3o4bo3bo$13bo2bo3bo2b3o2bob2o4bo3b2o2bobo5b 3o4bo3bo$13bo5b5o4b2o2bo3bo2b2ob2o3bobo3b2o4bo$9bo3bo4bo9b2o2bo2bo3bo 2bo6b2ob3o5bobo$2bo5b3o2bo4bob3o3bobobo4b4o4bob2o2bo2b2o$b3o3bo2b2o2b o7bobo14bo2b2o6bo3bo$2obo3b3o4bo2b2obo4b2o4bo4bob5o11bo$3o13b2o2b2o4b 5ob2ob2o2b4o2bo9bo$3o8bo3b2o4bo11bobo4bo3bo$3o8bo3b2o$b2o7bo$8b3o$7b4o $7b3o!

This was a far more difficult search. Here, an HWSS and an unnamed component help carry a B-heptomino upwards at 4c/8 orthogonal.

Example puffers #3 and #4

x=19, y = 22, rule = B3/S23 4b3o5b3o$4bo2bo3bo2bo$4bo9bo$4bo9bo$5bobo3bobo2$8b3o$7bo3bo$7bo3bo$6bo 5bo$b3o11b3o$o2bo3bo3bo3bo2bo$3bo4b3o4bo$3bo3b5o3bo$obo2bo2b3o2bo2bobo $5bo7bo$7b5o$bo5bo3bo5bo$3o4b2ob2o4b3o$ob2ob2o5b2ob2obo$b3ob9ob3o$b2o 3bo5bo3b2o!
x=19, y = 97, rule = B3/S23 4bo5bo$3b3o3b3o$3bob2ob2obo$4b3ob3o$4b3ob3o$4b3o2b2o$4b2o2$b3o2b3o$b2o 2$9bo$6b2ob2o$6bo2b2o$7bo$3b3obo2bo$2b2obob3o$2bo2bobob2o$4b2o2bo2bo$ b4o6b2o$b4o6bo$2b3o3b2obo$4bo2bo2b2o$3bobobobo$3bobob2o3b3o$3bobo2bo4b 2o$2b2ob2ob3o$2bo2b2o4bo$4bo2bo4bo$6bobo4bo$6bob3o2bo$13bo$13bo$2b3o7b o$bo2bo4bo3bo$bo4bo2b2o2bo$2ob4o$bobo9bo$2ob10o$2o$5bo2bo3bo$5bobo4bo 2$2bo6bo$b3o4b3o$o3bo3bob2o$4bo6bo$o3b3obo2bo$b2ob3ob2ob2o$5bo4bo$3b2o 6b2o$10bobo$9bob2o$2b3o3b2o2bo$2bo2bo6b3o$2bo4b3o3b2o$2bo10bo$3bo4bo2b o$5b2obob2obo$8bo4bo$7bo$7b2o$11b2o$7bobob2o$9b3o2$9bo$8bobo$8bobo$9b o$2b3o9b3o$bo2bo4bo4bo2bo$4bo3bobo3bo$o3bo9bo3bo$4bo2bo3bo2bo$bobo4b3o 4bobo4$4bo9bo$3b3o7b3o$2b2obo2b3o2bob2o$8bobo$8b3o$9bo$7bo3bo$7b2ob2o $6bo5bo$6b7o$4bo9bo$4b3ob3ob3o$5bo2b3o2bo4$2bobo9bobo$3bo11bo!

Both were spotted from thin connections DURING a JLS search, as opposed to from looking at a result. In both cases, some constraint I had placed caused JLS to be unable to complete the object into a spaceship. Note that the second puffer here actually came from an attempt to find 4c/8 spaceships by extending from the beehive and two MWSSes. Remove the back and you get a P24 puffer instead. The first puffer actually dates from September 2020 or so; I likely considered it a one-off and didn't realize that other engines could be found from these searches. jslife-moving-master also had a smaller puffer with identical ash, so this puffer got stuck into a file and forgotten about for around 18 months or so. :(

Hold on to every ship you find

I'm talking about the low-period spaceships straight out of RLS or JLS (or WLS!). Post every ship you find. Now, I don't mean "one ship per forum post", or even "one ship per edit". "One ship per post" would quickly spam wherever you posted them to, and "one ship per edit" would quickly eat up your time scrolling to the end of your post. Instead, stick them in a file. The text editor will scroll with you. Once you get a bunch of ships in that file, post that, and start a new one. I usually do a few hundred ships per file, though you might want to do more or less depending on your search speed. Note that you don't have to post the ships on the forums; you may also want to consider posting them to a GitHub repository.

But what's the point?

Example puffer #5

This is an extreme case, but it'll serve to show my point. The left spaceship was originally found as a dimer in September 2020 or so. That sparker search I mentioned earlier caused me to suddenly remember that old P16 puffer, so I found my old spaceship file. In addition to digging up that old P16 puffer, I also dug up that ship. I noticed that when I removed the back, it moved for a while, then broke. I tried to stabilize it, but to no avail. Then I noticed that while it was gutter-symmetric, only the front x66 actually relied on the gutter. The rest did not. So I tried replacing half of the ship with an HWSS. That part worked, but the ship still exploded without the back. However, I was given a new surface to attack the back with. This time, I got it, with two different stabilizations.

x=78, y = 33, rule = B3/S23 8bo6bo22bo6bo22bo6bo$7b3o4b3o20b3o4b3o20b3o4b3o$6bo2b2o2b2obo19bo2b2o 2b2obo19bo2b2o2b2obo$6bob2o3b3o20bob2o3b3o20bob2o3b3o$8bo4b3o22bo4b3o 22bo4b3o$6bo2bo3b3o20bo2bo3b3o20bo2bo3b3o$9bo4b2o23bo4b2o23bo4b2o$7bo bo27bobo27bobo$9bo29bo29bo$5bo29bo29bo$4b3obo25b3obo25b3obo$3b2obo26b 2obo26b2obo$5b3o27b3o27b3o$5b2o28b2o28b2o$4bo29bo29bo$4bo2bo26bo2bo26b o2bo$3b2o2bo25b2o2bo25b2o2bo$2b4o2bo23b4o2bo23b4o2bo$4b5o25b5o25b5o$4b 2o28b2o28b2o$6b2ob2o25b2ob2o25b2ob2o$6b2obo26b2obo26b2obo$2bo4bo24bo4b o24bo4bo$b3o3bo2bo20b3o3bo2bo20b3o3bo2bo$2obo3bo2bo19b2obo3bo2bo19b2o bo3bo2bo4b3o$3o3bob2o20b3o3bob2o20b3o3bob2o4bo2bo$b2o5bo22b2o5bo6b3o13b 2o5bo8bo$5bo29bo8bo2bo17bo7bo3bo$5bo3bo28bo8bo20bo4bo3bo$35bo2bo4bo3b o17bo2bo8bo$8b2o26bo10bo18bo7bobo$10bo33bobo$9bo!

Feed truncated spaceships into a stdin symmetry

One way to do this is to keep spaceships in a temporary file ("box"), until you have a few hundred or so (see above). This box should have the spaceships in separate RLEs, one per spaceship. Once you're ready, you can use this script to create all possible truncations for each ship in the box.

var slice=function(rle){
  rle=rle.substring(0,rle.length-1);//Remove the ending "!"
  rle=rle.split("$");
  while(rle.length){
    console.log(rle.join("$")+"!");
    rle.pop();
  }
};
var fs=require("fs");
var txt=fs.readFileSync("./box.txt","utf-8").split("!");
txt.pop();
txt=txt.map(x=>x+"!");
txt.map(x=>slice(x));

On the other hand, once you post your ships, I recommend posting them in a single RLE with all the spaceships in it, for quick pasting and viewing.

Example spaceship #4

This comes from a truncation. Without the stdin, I would have missed this ship, as well as many other ships and puffers.

x=13, y = 21, rule = B3/S23 8bo$7b3o$7bob2o$10bo$6b3o$6b6o$bo5bob2obo$3o6bo$ob2o4bo$b3o3b3obo$b3o 3bobo$b3o2b2o2b3o$b2o7b2o$6b2o3b2o2$6bo4b2o$5b2o$5b2o2bo$8b3o$7b2o2bo $10b2o!