From: pdh@netcom.com (Phil Howard )
Subject: specification of rulesets
Date: Sun, 16 Aug 92 00:19:45 GMT
Organization: Netcom - Online Communication Services  (408 241-9760 guest) 

One way I could specify a ruleset for dealing with a rectangular universe
of cells with 8 neighbors (4 orthogonal, 4 diagonal) would be to supply
a bit string of 512 elements.  The 8 neighbors plus original cell could
form an index into the bit string to select the state of the new cell.

However what I really want is something simply for specifying the simpler
rulesets.

In the case of Conway, there is no difference between the effect of
orthogonal neighbors and diagonal neighbors.  However I don't see why
rulesets could be specified that did indeed have such differences.
For example a rule might allow a cell to live with 4 neighbors if
at least 2 of them are diagonals.  It might have a cell born with
2 parents if they are orthogonal and opposite, 3 otherwise.

Even more bizarre rulesets could even have a directional bias as in
having the cell above and above-left count as two cells when alive.

The more complicated the ruleset, the more complicated the specification
is expected to be.  Conway's rules should be quite simple to specify,
as well as other rulesets that merely change the numbers.

Here is one ruleset I am wanting to try out.  Consider how such a rule
might be specified.  It certain CAN be in the 512 element bit string,
but I think the bit string is too much for it.

BEGIN RULESET I WANT TO TRY

Cells will be born from 2 parents if the parents are in exact opposite
positions from the new cell position, and there is only one set of
parents attempting to create a new cell there.  For instance:

these will create a new cell in the center:

   o..   .o.
   ...   ...
   ..o   .o.

however these will NOT because the parents are not opposite:

   o..   ..o
   ..o   ...
   ...   .o.

note that in this case, no cell is born in the center for the same reason
above, although one will be born on the left side:

   o..
   ..o
   o..

in these cases, NO cell will be born because 2 or more parents are
trying to birth in the same place and that is a conflict:

   oo.   .o.   ooo
   ...   o.o   o.o
   .oo   .o.   ooo

however the conflicts only affect the position, not the parents, so
in this case we will get NO cell in the center, but one on the left
and bottom will be born:

   o..
   ...
   o.o

A side note here, if the conflict affected the parents themselves, such
as a parent encountering a conflict not being able to birth anywhere
else, we could see the "speed of light" jump by up to 3 times.  The
calculations would also be more than a neighbor indexed lookup could
handle.


For cells already existing, they will live on if the neighbor FACTOR is
between 2.5 and 5, with diagonals counting as 1 and orthogonals counting
as 1.4.  So that means:

    0 1 2 3 4 <-- orthogonals
  0 . . X X .
  1 . . X . .
  2 . X X . .
  3 X X . . .
  4 X . . . .
  ^
  |-diagonals

Which definitely treats the 2 types of neighbors slightly differently.

END OF RULESET I WANT TO TRY
-- 
/***********************************************************************\
| Phil Howard  ---  KA9WGN  ---  pdh@netcom.com   |   "The problem with |
| depending on government is that you cannot depend on it" - Tony Brown |
\***********************************************************************/