Interestingly enough, the patterns in the Game of Life can be used to create a computer. Instead of electricity being turned on and off to represent the binary values of 0 and 1, data is represented using a stream of gliders. A bit has the value of 1 if a glider is present, 0 if not. Thus, all binary data is transmitted by gliders.

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.

NOT Gate

Glider Gun
|
|
|
A--> *
|
|
v
NOT A

Using the same idea as a NOT gate, AND gates can also be built out of gliders. It is built by intersecting the first input stream, A, with a glider gun to create a NOT gate. Then the result from that, NOT A, is intersected with the second input stream, B. The resulting output stream of A AND B continues to move along the same line as the second input stream. The leftover gliders continuing in the same direction as the initial glider gun are fed into an eater that destroys all gliders coming its way to keep extraneous gliders from escaping the gate.

AND Gate

Glider Gun
|
|
A--> v
|
|
B--> *-->A AND B
|
|
v
Eater

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 a 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, a test glider can be sent to intersect with it, allowing the storage and
retrieval of numbers based on repetition of incrementing and decrementing the blocks.

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.