We conflate the Empty and Full states
with their on-screen representation, as space
and @ respectively.

To transform the automaton from one generation to the next
we apply the rules to each cell in the automaton in turn.
Rule application consists of examining the cells to the right of a cursor,
c, and writing the result to the left.

In order to process an entire line,
we initialize the loop with the cursor on the left-hand end,
and empty neighbors at either end of the automaton space.
Once the cursor reaches the right-hand end,
the scan is finished
and we remove the cursor.