2D Array Search

Hi!

Working on what to everyone else is a simple program but to me is proving quite difficult.  Program simulates birth and death within a two dimensional array.

Specifically, after the user specifies that life exists in say seven elements, successive generations are displayed using these two rules:

1) an organism in a cell survives to the next generation if exactly 2 or 3 of its neighbors are living, otherwise it dies

2) an organism is born into an unoccupied cell if exactly 3 of its neighbors are unoccupied.

Obviously I'm a student and I don't even know where to begin writing what is probably a series of loops to search for values in the six surrounding elements.

Would someone please show me what this code would look like and explain the why of it?

Thanks much.

Keith Connor

connorkAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jos010697Commented:
For any current cell, located at position i, j, the following
loops count the number of living and dead cells:

nof_dead= 0;
nof_alive= 0;

for (di= -1; di <= 1; di++)
   for (dj= -1; dj <= 1; dj++)
      if (cell[i+di][j+dj] == dead)
         nof_dead++;
      else
         nof_alive++;

Now determine what to do with the current cell:

if (cell[i][j] == alive) {
   if (nof_alive == 2 || nof_alive == 3)
      next_cell[i[[j]= alive;
   else
      nex_cell[i][j]= dead;
}
else if (nof_alive == 3)
   next_cell[i][j]= alive;
else
   next_cell[i][j]= dead;

The array nex_cell contains the next generation of
all the cells ...

does this clarify things a bit?

kind regards,

Jos aka jos@and.nl

ps. Note that some care has to be taken for 'wrap around',
     i.e. the cells next to the border of the array must be taken
     care of in a sensible way. The normal approach is to
    define the cell array as a torus, i.e. the rightmost cells
    have the leftmost cells as their right neighbors etc.

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
connorkAuthor Commented:
Jos,

Thanks!  Of course being a student I'm going to have to 'digest'
this :).  Also, for clarification this will only provide the results of one cell or all?

Keith Connor
 


0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C++

From novice to tech pro — start learning today.