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.
