The interactions between gliders allow logic gates to be built as the basis for all computation. The most simple gate, the NOT gate, consists of an input stream, an output stream, and a single glider gun. It is built using the idea that when two gliders collide, they annihilate each other. In building the gate, a stream of gliders from a glider gun is set to collide at a 90 degree angle with the input stream. The resulting output stream continues in the same direction as the gliders from the glider gun were initially going, at a 90 degree angle to the input stream. The way it works is that whenever there is a glider present in the input stream (a one), it collides with the glider from the glider gun. The gliders destroy each other, sending nothing to the output stream in that position (a zero). When no glider is present in the input, the glider from the glider gun stream is allowed to pass through to the output, appearing as a one in the output stream.
While OR gates can be constructed as well, they are unnecessary since all other gates can be built as a combination of AND and NOT gates, sometimes referred to as NAND gates.
One problem with a normal glider stream is that it is too dense to allow for two streams to intersect. Luckily, this problem is easily solved by selectively crashing a second line of gliders into the first, thinning the line to a quarter of the gliders it previously had. Other equally thinned streams of gliders can then intersect by setting off their timing by one, two, or three units.
Now that a complicated series
of computations can be carried out by
combining logic functions and the gliders can pass through each other
without intersecting, the remaining problem is to store the result of
those computations. Internal memory could easily be kept by creating a
continuously circulating stream of gliders. By using pairs of NOT gates
to change the direction of the stream, more data could easily be
inserted. However, for more complicated processes, some variety of
external memory is necessary. This is provided by using a stable
structure called a block. The memory stores information through three
processes: incrementing the position of a block, decrementing the
block's position, and testing if that position has reached zero. Through
reaction with a group of 2 gliders, a block can be pulled one unit
diagonally and a group of 3 gliders will push the block one unit
diagonally. In order to test if the block has reached the position zero,
test glider can be sent to intersect with it, allowing the storage and
Now all components of the computer have been created and now must only be combined. However, like the Turing machine, it soon becomes too complicated to be feasible to perform anything other than the simplest calculations on a Game of Life computer. However, it is interesting to note that it is in fact possible, if not advisable. The Game of Life shares another interesting parallel with a Turing machine, it's a universal machine. Any problem that can be represented as a series of logical expressions can theoretically be solved on a Game of Life computer. However, it faces the same problem that keeps the Turing from computing everything: no one can tell if an arbitrary pattern built to solve a mathematical problem will ever reach a final state.