User:Saka/Gemini Pages/Tut:LSSS

From LifeWiki
Jump to navigation Jump to search

Andrew J. Wade's life slice spaceship search (or LSSS for short) is the latest shiny new search program for finding ships in Life and Life-Like (Although not non-totalistic) CA. It's by far the fastest search program for Life-like (Isotropic non-totalistic) CA, so it's pretty recommended.

Installing

Prerequisites

LSSS requires a unix-like command line (The author of this Tutorial used WSL [Windows Subsystem for Linux], to install WSL, go here) and Rust, as detailed on it's gitlab page.
Click and follow all the links in the above sentence.
Also be aware that large LSSS searches require quite a lot of disk space. A width 15 search, for example, requires over 60 gigabytes of disk space.

Getting the Thing and Compiling

First, clone the GitLab repository with the following command:

git clone https://gitlab.com/andrew-j-wade/life_slice_ship_search.git

Next, go into it's directory by typing

cd life_slice_ship_search

To compile the program, run the following command:

RUSTFLAGS='-C target-cpu=native' cargo build --release


Because of how much disk space is required for LSSS (as mentioned in the "Prerequisites" section), the author suggests to move the LSSS folder and files to another drive with more space, if available.

Important note: If you are using WSL, the author suggests to move the LSSS folder out of the root folder. The root folder is located at the directory C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState. This is because deleting and modifying files within the root folder from the normal Windows File Explorer can screw up permissions.

Doing A Search

Navigate to the LSSS folder and look for the file search.sh. Open it with your favorite text editor. At the start you'll see some options you can change. Most of these are pretty straightforward, but let's take a look at each of them:

  • margin: This is the width you want to search at. However, add one more to this margin value if you are searching for asymmetric ships (For example, if you want to search for a width 10 asymmetric ship, you want your "margin" value to be 11).
  • midline: This is the symmetry you want your search to be. There are three commented out and one not commented out. They're pretty self-explanatory, there's one for even symmetry, one for odd symmetry, one for gutter symmetry, and one for no symmetry. Pick one and comment out the rest.
  • parms: This is where you put in the velocity and rule you want to search for and in. Should be pretty straightforward. If you're new to the velocity notation, it works like this:
(dx,dy)c/period

"dx" is "delta x", or, the x displacement after <period> generations.
"dy" is "delta y", or, the y displacement after <period> generations.
Or, to put it simply, a ship with velocity (dx,dy)c/period will travel dx number of cells to the right and dy cells down after period generations (some programs flip up-down and left-right but that doesn't really matter).

  • seedcolumn: This parameter sets the first row of the search. You don't really need to worry too much about this. Leave it at 00 for now, it will be discussed later.

Just to demonstrate, let's search for a c/7o (In the velocity notation, (1,0)c/7) in Diamoeba (B35678/S5678). To do this, set the parms variable to

--velocity (1,0)c/7 --rule B35678/S5678

this will search for a ship that moves one (1) cell horizontally every seven (7) generations in the rule B35678/S5678.