# Thread: Game of life program

1. Absolutely Mike, check it out:

The first branch of the original conditional executes when num_neighbors is:

Code:
```                    =-------O
<-------------|-----|---|---|------>
0     2       4```
That's the collection of numbers for which the first condition is true, i.e. [2, 4).... Indeed the integers 2 and 3. The second branch...

Code:
```             <------O       =------>
<-------------|-----|---|---|------>
0     2       4```
Yes, that's the complement with respect to the number line, i.e. (-inf, 2) union [4, inf). Which is identical to your suggestion:

Code:
```                    =   =
<-------------|-----|---|---|------>
0     2   3   4```
For the first branch, that is [2, 3], and the else block executes for anything else...

Code:
```             <------O   O------>
<-------------|-----|---|---|------>
0     2       4```
That is the set of numbers (-inf, 2) union (3, inf).

Thanks for the prompt. I apologize that I haven't been more involved, I'm kind of in the middle of several activities at the moment including sharpening up my PERL for a couple contracts that I would like to land....

Best Regards,

I think, we solved problem.
Code:
```#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 25
#define COLS 25
void game_of_life(char o_arr[][COLS], char n_array[][COLS]);
int checkx(char arr[][COLS],int row, int col);
int main(void)
{
char array[ROWS][COLS],n_array[ROWS][COLS];
srand(time(NULL));
int i, j, r_integer[ROWS][COLS], num_gen;
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
r_integer[j][i] = (rand() % 100) > 50 ? 1 : 0;
}
}
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
if(r_integer[j][i] == 0)
array[j][i]=' ';
else
array[j][i]='X';
}
}
for(i=0;i<ROWS;i++){
printf("\n");
for(j=0;j<COLS;j++){
printf("%c", array[j][i]);
}
}
for(num_gen=0;num_gen<4;num_gen++){
printf("\nGeneration: %d\n", num_gen+1);
game_of_life(array,n_array);
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
array[j][i]=n_array[j][i];
}
}
for(i=0;i<ROWS;i++){
printf("\n");
for(j=0;j<COLS;j++){
printf("%c", n_array[j][i]);
}
}
}
return(0);
}
void game_of_life(char o_arr[][COLS], char n_array[][COLS])
{
int i, j, num_neighbors=0;
for(i=0;i<COLS;i++){
for(j=0;j<ROWS;j++){
if ((o_arr[j][i])=='X'){
num_neighbors = checkx(o_arr, j, i);
if( num_neighbors == 2 || num_neighbors == 3)
n_array[j][i]='X';
else
n_array[j][i]=' ';
}
else {
num_neighbors=checkx(o_arr, j, i);
if (num_neighbors == 3)
n_array[j][i]='X';
else
n_array[j][i]=' ';
}
}
}
}

int checkx(char arr[][COLS],int row, int col)
{
int num_neighbors = 0;
if ((row > 0 && col > 0 && arr[row-1][col-1])=='X')
num_neighbors++;
if ((row > 0 && arr[row-1][col])=='X')
num_neighbors++;
if (row > 0 && arr[row-1][col+1] == 'X')
num_neighbors++;
if ((col > 0 && arr[row][col-1])=='X')
num_neighbors++;
if ((arr[row][col+1])=='X')
num_neighbors++;
if ((col > 0 && arr[row+1][col-1])=='X')
num_neighbors++;
if ((arr[row+1][col])=='X')
num_neighbors++;
if ((arr[row+1][col+1])=='X')
num_neighbors++;
return(num_neighbors);
}```
output:
Code:
```X XXX  X XXX  X    XXX X
XXX   X   X  XX    XX XXX
X XXX XXX  X XX  XX X XXX
X     XX X    X  XX    X
X      X  X   X   X  XX
X X  XX XXXXX   X XXX XX
X XXX  XXX XX X  X   X
XXX  XXXX  X  XXX   X XX
X  X X   X XXX XXXXX  XX
X  X X   XXXX XX   X X  X
X   X X XXX        X
XXXX X X X X X
X  X X XXX  X XX  XX   X
XX XX XX XX X X XXXXXXX
XXX  X     XX X   XX XX
XXX  XXX X XX    X    X
X  XX   XXX   X XX XXX X
XX   XX   XXXXX XXX X  X
X X XX X   XXXX X X  XXX
X  XXX       XX XXX X  X
X  XXXXX XXXX  X X XXX
X X      X XXXX  XX  XXX
X      X XX   XX XXX XX
X XXX         XXXX X X XX
X XX  X X      XXX X X X
Generation: 1

X XX     XX  XX    XXXXX
XXXX XXX    XXX   XX XX X
X   XXX        XXX   X
X          X
XX  XX     XXXXXX
X  X  X XXX     XX  X
X XX    X  X  XXX    X
XX  XXX   XXXXXXXXXX  XX
X    XX XXXXX XXX  X
X  X XX
XXX XXX
XXX XX X   XXX
X XXXXXXXX X XXX   XXXX
X X X      XXXXX XXXX
X X  XX    XX         X
XXX   XX X      XX X X
XX   XX   X XXXX XX
XX  XXX   XX  XXXX     X
X X      XXXXXXXX  XX
XXXXX   X X  XX XXXX
X     XXXXXX  XXXXXX
XX  XXX X X XXX
X          XX XX XXX
XXX          XXXXX X X
X X   XXX       XX XX
Generation: 2

X  X  X     X X   XXXXXX
XX  XXX         X X
XX         XX
XX         XXXXX
X  XXX     XXXXX
X X     XX    XXX
XXX  X    XXX   XXX
X    XXX   XXX X  X
XXXX
XX XX X
XXXXXX    X
XX X  X X  XX X    XX
XXXXXX     X XX XX  X
X   X     XXX
X X  XX
XXX   XX      X XXXX
XX    X   XX XX XXX
XXX    XXX    X    X
X XX     XXXXXXXXX X
XXX    XX XXXX X   X
XXXXX X  XXXX X
XXXXXXXX X
XX          XX  XXXXX
XX    X       XXXXXX
XX    XXX       XX  X
Generation: 3

X  XX           XXX
XXX         XX
XX         XXXX
X   X      X   X
XXX    X XX
XXX      XXX   XXX
X X   X XX
X  X
XXXX
XX  XX
XXXXXX    XX
XX XX X    X XX   XX
XX XX     XXXX
X   X
X X  XX          XX
XX    X      XXXX X
XX    XXXX  XX
XXX    XXXXXX XX
X X     XXX  XXXX
X X XXX  XXXXX
XX XX   XX
XXXXXX X X
XX                 X
XX    XX       XXXXX
X               XXX X
Generation: 4

XX          XXX
XXX         XXX
X          XX
XX      X
X      XXX    X X
XX    XXX

XXXX
XXX
X XX X
XXXXXX     XX
XXXXXX     X  X
X  X
X   X
XX   X        XXXX
X     X XXXXX
X X    X  XXXXX
XX     X XXXX  X
XXXXXXXXXXXX
XXXX   XXX
XX  XX XXX

XX              XXXX
X              XX XX
X X```