Tutorials/Software: Difference between revisions

From LifeWiki
Jump to navigation Jump to search
zfind isn't really recent anymore...
No edit summary
 
(15 intermediate revisions by 8 users not shown)
Line 2: Line 2:


== Types of Software ==
== Types of Software ==
There are many types of Life search programs. Some search for exotic spaceships and others search for fancy oscillators. Some can do both and some more.
There are many types of Life search programs. Some search for exotic spaceships and others search for fancy oscillators. Some can do both and some more.<ref name="post154260" /><ref name="post154263" />


=== Row-by-row ===
=== Row-by-row ===
Line 8: Line 8:


* [[gfind]]: this is a well-known breadth-first spaceship finder. It was written in C by [[David Eppstein]], who used it to find the [[weekender]]. Paul Tooke used it to find the [[dragon]]. It finds extensions of partial results by means of [[de Bruijn graphs]].
* [[gfind]]: this is a well-known breadth-first spaceship finder. It was written in C by [[David Eppstein]], who used it to find the [[weekender]]. Paul Tooke used it to find the [[dragon]]. It finds extensions of partial results by means of [[de Bruijn graphs]].
* [[zfind]]: a program made by the user 'zdr', who used it to find the [[copperhead]]. It differs from gfind in that partial extension is performed by a memory-intensive lookup table, making it suitable for narrow spaceships of relatively high periods.
* [[zfind]] ([https://github.com/rokicki/ntzfind GitHub link]): a program made by [[zdr]], who used it to find the [[copperhead]]. It differs from gfind in that partial extension is performed by a memory-intensive lookup table, making it suitable for narrow spaceships of relatively high periods. Improved by [[Matthias Merzenich]], [[Praosylen]] and [[Tomas Rokicki]], and renamed '''ntzfind'''.
* [[ofind]]: a breadth-first oscillator search program by David Eppstein, differing from gfind in its handling of [[stator]] cells and its approach of extending all [[phase]]s simultaneously.
* [[ofind]] ([https://conwaylife.com/forums/viewtopic.php?f=9&t=3549 forum thread]): a breadth-first oscillator search program by David Eppstein, differing from gfind in its handling of [[stator]] cells and its approach of extending all [[phase]]s simultaneously.
* '''knight.*''': similar to gfind, but only stores one phase of the partial. This was written by [[Tim Coe]] to find spaceships, and succeeded in discovering the [[spaghetti monster]].
* '''knight.*''': similar to gfind, but only stores one phase of the partial. This was written by [[Tim Coe]] to find spaceships, and succeeded in discovering the [[spaghetti monster]].
* '''qfind''': parallelised version of zfind, with some features of gfind.  Maintained by [https://github.com/Matthias-Merzenich/qfind Matthias Merzenich].
* [[qfind]] ([https://github.com/Matthias-Merzenich/qfind GitHub link]): parallelised version of zfind, with some features of gfind.  Maintained by [[Matthias Merzenich]].


=== Cell-by-cell ===
=== Cell-by-cell ===
Line 18: Line 18:
* [[lifesrc]]: the canonical search program, by David Bell. The programs [[JLS]] and [[WLS]] are derivatives thereof.
* [[lifesrc]]: the canonical search program, by David Bell. The programs [[JLS]] and [[WLS]] are derivatives thereof.
* [[Logic Life Search]]: a Python program by Oscar Cunningham which serves as a frontend to one of several different SAT solvers.
* [[Logic Life Search]]: a Python program by Oscar Cunningham which serves as a frontend to one of several different SAT solvers.
* '''dr''': a search program by [[Dean Hickerson]] for finding stabilisations of perturbations moving across a stable background. It can find [[billiard table]] oscillators, signals, and eaters. Written in C.
* [[dr]] ([https://conwaylife.com/forums/viewtopic.php?p=86954 forum link]): a search program by [[Dean Hickerson]] for finding stabilisations of perturbations moving across a stable background. It can find [[billiard table]] oscillators, signals, and eaters. Written in C.


=== Catalysis ===
=== Catalysis ===
These programs attempt to perturb a reaction by placing [[catalyst]]s at the edge of the reaction envelope. Their main use is finding new [[Herschel]] [[conduit]]s and other stable technology.
These programs attempt to perturb a reaction by placing [[catalyst]]s at the edge of the reaction [[envelope]]. The main use of the first five programs is finding new [[Herschel]] [[conduit]]s and other [[stable technology]]. The remaining programs are CatForce variants that have been used since 2020 to search for oscillator stabilizations, partly in an attempt to fill in then missing oscillator periods (see [[Omniperiodic]]).


* '''catalyst''': the original catalysis search program by [[Gabriel Nivasch]].
* '''catalyst''': the original catalysis search program by [[Gabriel Nivasch]]. This found the [[boojum reflector]].
* '''catgl''': [[Dave Greene]]'s modification of catalyst with the ability to detect and remove escaping [[glider]]s. This found the [[boojum reflector]].
* '''catgl''': [[Dave Greene]]'s modification of catalyst with the ability to detect and remove escaping [[glider]]s.
* [[ptbsearch]]: a catalysis search program by [[Paul Callahan]].
* [[ptbsearch]]: a catalysis search program by [[Paul Callahan]].
* [https://github.com/simsim314/CatForce CatForce]: a catalysis search program by [[Michael Simkin]].
* [[CollisionsSearch]] ([https://conwaylife.com/forums/viewtopic.php?f=9&t=2246 forum thread]): a catalysis search program by 'Guam', written in Delphi.
* [http://www.conwaylife.com/forums/viewtopic.php?f=9&t=2246 CollisionsSearch]: a catalysis search program by 'Guam', written in Delphi.
* [[CatForce]] ([https://github.com/simsim314/CatForce GitHub link]): a catalysis search program by [[Michael Simkin]].
* CatForce variant ([https://github.com/mvr/CatForce GitHub link]) that includes symmetry options by [[Mitchell Riley]].
* CatForce-based oscillator searcher ([https://github.com/luke-kiernan/CatForce/tree/osc_search_revisited GitHub link]) by [[Luke Kiernan]].
* LocalForce ([https://github.com/nicobrownmath/LocalForce GitHub link]): a CatForce-based oscillator searcher by [[Nora Brown]]. It includes a version for searching with periodic catalysts ([https://github.com/nicobrownmath/LocalForce/tree/periodic GitHub link]).


=== Soup searchers ===
=== Soup searchers ===
Instead of constructing a pattern piecewise, these programs run initial seeds in a cellular automaton and observe the resulting behaviour.
Instead of constructing a pattern piecewise, these programs run initial seeds in a cellular automaton and observe the resulting behaviour.


* [[gsearch]]: brute-force search of small rectangular soups, with the ability to detect if the pattern evolves into an [[oscillator]], [[spaceship]], [[replicator]], or [[puffer]].
* [[gsearch]] ([https://www.ics.uci.edu/~eppstein/ca/gsearch.c external link]): brute-force search of small rectangular soups, with the ability to detect if the pattern evolves into an [[oscillator]], [[spaceship]], [[replicator]], or [[puffer]].
* [[apgsearch]]: family of distributed search programs which run pseudorandom soups and report to a centralised server, [[Catagolue]]. It found the [[pufferfish]] and [[Rich's p16]], in addition to rediscovering many known patterns and providing useful [[predecessor]]s thereof.
* [[apgsearch]]: family of distributed search programs which run pseudorandom soups and report to a centralised server, [[Catagolue]]. It found the [[pufferfish]] and [[Rich's p16]], in addition to rediscovering many known patterns and providing useful [[predecessor]]s thereof.
* [http://www.yucs.org/~gnivasch/life/index.html Random Agar]: a soup searcher by [[Gabriel Nivasch]] supporting periodic grids, able to find [[wick]]s and [[agar]]s in addition to oscillators.
* [[Random Agar]] ([https://drive.google.com/file/d/1nmK1RW6sFv5Inma96t8iey5AIh_LrZ9U/view Google Drive link], [https://www.gabrielnivasch.org/fun/life/random-agar README page]): a soup searcher by [[Gabriel Nivasch]] supporting periodic grids, able to find [[wick]]s and [[agar]]s in addition to oscillators.


=== Glider syntheses ===
=== Glider syntheses ===
Line 40: Line 43:


* [[Glue]]: Windows-based slow salvo search program written by [[Paul Chapman]].
* [[Glue]]: Windows-based slow salvo search program written by [[Paul Chapman]].
* '''HoneySearch''': parallel memory-intensive breadth-first search of [[slow salvo]] reactions. It ran over three days on a 72-core machine to produce 13 gigabytes of output data, which was later postprocessed and cleaned to produce the data for slmake.
* [[HoneySearch]]: parallel memory-intensive breadth-first search of [[slow salvo]] reactions. It ran over three days on a 72-core machine to produce 13 gigabytes of output data, which was later postprocessed and cleaned to produce the data for slmake.
* [[slmake]] / slsparse: a program for assembling [[slow salvo]] syntheses of stable constellations by tail recursion. The syntheses are pieced together from the reactions found by HoneySearch. [[Dave Greene]] used this program to prepare the data tapes for the [[Orthogonoid]] and [[Hydra]].
* [[slmake]] / slsparse: a program for assembling [[slow salvo]] syntheses of stable constellations by tail recursion. The syntheses are pieced together from the reactions found by HoneySearch. [[Dave Greene]] used this program to prepare the data tapes for the [[Orthogonoid]] and [[Hydra]].


Line 48: Line 51:
* [[ikpx]]: a heuristic-driven spaceship search program by [[Adam P. Goucher]]. It extends partials in a row-by-row fashion, but performs deep lookaheads by locally executing a cell-by-cell search similar to Logic Life Search (and parallelises). It was used to discover the first [[elementary]] [[knightship]], [[Sir Robin]].
* [[ikpx]]: a heuristic-driven spaceship search program by [[Adam P. Goucher]]. It extends partials in a row-by-row fashion, but performs deep lookaheads by locally executing a cell-by-cell search similar to Logic Life Search (and parallelises). It was used to discover the first [[elementary]] [[knightship]], [[Sir Robin]].
* [[Bellman]]: a search program for [[conduit]]s and [[stable reflector]]s. It constructs catalysts at the edge of the reaction envelope, and shares properties with both catalyst and dr.
* [[Bellman]]: a search program for [[conduit]]s and [[stable reflector]]s. It constructs catalysts at the edge of the reaction envelope, and shares properties with both catalyst and dr.
== Further reading ==
<references>
<ref name="post154260">{{LinkForumThread|format=ref|p=154260|title=Re: Thread for basic questions|author=Mark Niemiec|date=November 30, 2022}}</ref>
<ref name="post154263">{{LinkForumThread|format=ref|p=154263|title=Re: Thread for basic questions|author=Matthias Merzenich|date=November 30, 2022}}</ref>
</references>


{{Tutorial}}
{{Tutorial}}
[[Category:Software| ]]

Latest revision as of 09:42, 24 March 2026

A lot of people have been desperate to find new things in Life and be famous, which probably includes YOU. Because of this strange behavior of wanting to become famous, people have created software for searching for things... in Life. You too can use the software that other people have made. Many famous things have been found with software.

Types of Software

There are many types of Life search programs. Some search for exotic spaceships and others search for fancy oscillators. Some can do both and some more.[1][2]

Row-by-row

These programs discover patterns by extending partial results by one or more rows at a time. The method of traversing the tree of partial results, and of finding ways to extend a given partial result, differs between search programs.

  • gfind: this is a well-known breadth-first spaceship finder. It was written in C by David Eppstein, who used it to find the weekender. Paul Tooke used it to find the dragon. It finds extensions of partial results by means of de Bruijn graphs.
  • zfind (GitHub link): a program made by zdr, who used it to find the copperhead. It differs from gfind in that partial extension is performed by a memory-intensive lookup table, making it suitable for narrow spaceships of relatively high periods. Improved by Matthias Merzenich, Praosylen and Tomas Rokicki, and renamed ntzfind.
  • ofind (forum thread): a breadth-first oscillator search program by David Eppstein, differing from gfind in its handling of stator cells and its approach of extending all phases simultaneously.
  • knight.*: similar to gfind, but only stores one phase of the partial. This was written by Tim Coe to find spaceships, and succeeded in discovering the spaghetti monster.
  • qfind (GitHub link): parallelised version of zfind, with some features of gfind. Maintained by Matthias Merzenich.

Cell-by-cell

These programs maintain a grid of cells with known or unknown states and perform constraint propagation.

  • lifesrc: the canonical search program, by David Bell. The programs JLS and WLS are derivatives thereof.
  • Logic Life Search: a Python program by Oscar Cunningham which serves as a frontend to one of several different SAT solvers.
  • dr (forum link): a search program by Dean Hickerson for finding stabilisations of perturbations moving across a stable background. It can find billiard table oscillators, signals, and eaters. Written in C.

Catalysis

These programs attempt to perturb a reaction by placing catalysts at the edge of the reaction envelope. The main use of the first five programs is finding new Herschel conduits and other stable technology. The remaining programs are CatForce variants that have been used since 2020 to search for oscillator stabilizations, partly in an attempt to fill in then missing oscillator periods (see Omniperiodic).

Soup searchers

Instead of constructing a pattern piecewise, these programs run initial seeds in a cellular automaton and observe the resulting behaviour.

Glider syntheses

These programs search for glider syntheses of objects.

  • Glue: Windows-based slow salvo search program written by Paul Chapman.
  • HoneySearch: parallel memory-intensive breadth-first search of slow salvo reactions. It ran over three days on a 72-core machine to produce 13 gigabytes of output data, which was later postprocessed and cleaned to produce the data for slmake.
  • slmake / slsparse: a program for assembling slow salvo syntheses of stable constellations by tail recursion. The syntheses are pieced together from the reactions found by HoneySearch. Dave Greene used this program to prepare the data tapes for the Orthogonoid and Hydra.

Hybrid programs

Some software straddles more than one of the above categories:

  • ikpx: a heuristic-driven spaceship search program by Adam P. Goucher. It extends partials in a row-by-row fashion, but performs deep lookaheads by locally executing a cell-by-cell search similar to Logic Life Search (and parallelises). It was used to discover the first elementary knightship, Sir Robin.
  • Bellman: a search program for conduits and stable reflectors. It constructs catalysts at the edge of the reaction envelope, and shares properties with both catalyst and dr.

Further reading

  1. ↑ Mark Niemiec (November 30, 2022). Re: Thread for basic questions (discussion thread) at the ConwayLife.com forums
  2. ↑ Matthias Merzenich (November 30, 2022). Re: Thread for basic questions (discussion thread) at the ConwayLife.com forums