1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
| #include <stdio.h>
#define N 20
#define iterations 100
int sumarround(int ul, int um, int ur, int ml, int mr, int bl, int bm, int br)
{
int sum = ul+um+ur+ml+mr+bl+bm+br;
return sum;
}
int status(int sum, int alive_or_dead)
{
if(alive_or_dead==0) //dead
{
if(sum==3) {return 1;}
else {return 0;}
}
else //alive
{
if (sum<2) {return 0;}
else if (sum>3) {return 0;}
else {return 1;}
}
}
int print_matrix(int matrix[N][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d",matrix[i][j]);
}
printf("\n");
}
}
int main(void)
{
int i,j,step,sum;
int a[20][20], b[20][20];
int n = 0;
a[0][0]= 0; a[0][1]=0; a[0][2]=0; a[0][3]=0; a[0][4]=0; a[0][5]=0; a[0][6]=0; a[0][7]=0; a[0][8]=0; a[0][9]=0; a[0][10]=0; a[0][11]=0; a[0][12]=0; a[0][13]=0; a[0][14]=0; a[0][15]=0; a[0][16]=0; a[0][17]=0; a[0][18]=0; a[0][19]=0;
a[1][0]= 0; a[1][1]=0; a[1][2]=0; a[1][3]=0; a[1][4]=0; a[1][5]=1; a[1][6]=0; a[1][7]=0; a[1][8]=0; a[1][9]=0; a[1][10]=0; a[1][11]=0; a[1][12]=0; a[1][13]=0; a[1][14]=0; a[1][15]=0; a[1][16]=0; a[1][17]=0; a[1][18]=0; a[1][19]=0;
a[2][0]= 0; a[2][1]=0; a[2][2]=0; a[2][3]=0; a[2][4]=0; a[2][5]=0; a[2][6]=1; a[2][7]=0; a[2][8]=0; a[2][9]=0; a[2][10]=0; a[2][11]=0; a[2][12]=0; a[2][13]=0; a[2][14]=0; a[2][15]=0; a[2][16]=0; a[2][17]=0; a[2][18]=0; a[2][19]=0;
a[3][0]= 0; a[3][1]=0; a[3][2]=0; a[3][3]=0; a[3][4]=1; a[3][5]=1; a[3][6]=1; a[3][7]=0; a[3][8]=0; a[3][9]=0; a[3][10]=0; a[3][11]=0; a[3][12]=0; a[3][13]=0; a[3][14]=0; a[3][15]=0; a[3][16]=0; a[3][17]=0; a[3][18]=0; a[3][19]=0;
a[4][0]= 0; a[4][1]=0; a[4][2]=0; a[4][3]=0; a[4][4]=0; a[4][5]=0; a[4][6]=0; a[4][7]=0; a[4][8]=0; a[4][9]=0; a[4][10]=0; a[4][11]=0; a[4][12]=0; a[4][13]=0; a[4][14]=0; a[4][15]=0; a[4][16]=0; a[4][17]=0; a[4][18]=0; a[4][19]=0;
a[5][0]= 0; a[5][1]=0; a[5][2]=0; a[5][3]=0; a[5][4]=0; a[5][5]=0; a[5][6]=0; a[5][7]=0; a[5][8]=0; a[5][9]=0; a[5][10]=0; a[5][11]=0; a[5][12]=0; a[5][13]=0; a[5][14]=0; a[5][15]=0; a[5][16]=0; a[5][17]=0; a[5][18]=0; a[5][19]=0;
a[6][0]= 0; a[6][1]=0; a[6][2]=0; a[6][3]=0; a[6][4]=0; a[6][5]=0; a[6][6]=0; a[6][7]=0; a[6][8]=0; a[6][9]=0; a[6][10]=0; a[6][11]=0; a[6][12]=0; a[6][13]=0; a[6][14]=0; a[6][15]=0; a[6][16]=0; a[6][17]=0; a[6][18]=0; a[6][19]=0;
a[7][0]= 0; a[7][1]=0; a[7][2]=0; a[7][3]=0; a[7][4]=0; a[7][5]=0; a[7][6]=0; a[7][7]=0; a[7][8]=0; a[7][9]=0; a[7][10]=0; a[7][11]=0; a[7][12]=0; a[7][13]=0; a[7][14]=0; a[7][15]=0; a[7][16]=0; a[7][17]=0; a[7][18]=0; a[7][19]=0;
a[8][0]= 0; a[8][1]=0; a[8][2]=0; a[8][3]=0; a[8][4]=0; a[8][5]=0; a[8][6]=0; a[8][7]=0; a[8][8]=0; a[8][9]=0; a[8][10]=0; a[8][11]=0; a[8][12]=0; a[8][13]=0; a[8][14]=0; a[8][15]=0; a[8][16]=0; a[8][17]=0; a[8][18]=0; a[8][19]=0;
a[9][0]= 0; a[9][1]=0; a[9][2]=0; a[9][3]=0; a[9][4]=0; a[9][5]=0; a[9][6]=0; a[9][7]=0; a[9][8]=0; a[9][9]=0; a[9][10]=0; a[9][11]=0; a[9][12]=0; a[9][13]=0; a[9][14]=0; a[9][15]=0; a[9][16]=0; a[9][17]=0; a[9][18]=0; a[9][19]=0;
a[10][0]=0;a[10][1]=0;a[10][2]=0;a[10][3]=0;a[10][4]=0;a[10][5]=0;a[10][6]=0;a[10][7]=0;a[10][8]=0;a[10][9]=0;a[10][10]=0;a[10][11]=0;a[10][12]=0;a[10][13]=0;a[10][14]=0;a[10][15]=0;a[10][16]=0;a[10][17]=0;a[10][18]=0;a[10][19]=0;
a[11][0]=0;a[11][1]=0;a[11][2]=0;a[11][3]=0;a[11][4]=0;a[11][5]=0;a[11][6]=0;a[11][7]=0;a[11][8]=0;a[11][9]=0;a[11][10]=0;a[11][11]=0;a[11][12]=0;a[11][13]=0;a[11][14]=0;a[11][15]=0;a[11][16]=0;a[11][17]=0;a[11][18]=0;a[11][19]=0;
a[12][0]=0;a[12][1]=0;a[12][2]=0;a[12][3]=0;a[12][4]=0;a[12][5]=0;a[12][6]=0;a[12][7]=0;a[12][8]=0;a[12][9]=0;a[12][10]=0;a[12][11]=0;a[12][12]=0;a[12][13]=0;a[12][14]=0;a[12][15]=0;a[12][16]=0;a[12][17]=0;a[12][18]=0;a[12][19]=0;
a[13][0]=0;a[13][1]=0;a[13][2]=0;a[13][3]=0;a[13][4]=0;a[13][5]=0;a[13][6]=0;a[13][7]=0;a[13][8]=0;a[13][9]=0;a[13][10]=0;a[13][11]=0;a[13][12]=0;a[13][13]=0;a[13][14]=0;a[13][15]=0;a[13][16]=0;a[13][17]=0;a[13][18]=0;a[13][19]=0;
a[14][0]=0;a[14][1]=0;a[14][2]=0;a[14][3]=0;a[14][4]=0;a[14][5]=0;a[14][6]=0;a[14][7]=0;a[14][8]=0;a[14][9]=0;a[14][10]=0;a[14][11]=0;a[14][12]=0;a[14][13]=0;a[14][14]=0;a[14][15]=0;a[14][16]=0;a[14][17]=0;a[14][18]=0;a[14][19]=0;
a[15][0]=0;a[15][1]=0;a[15][2]=0;a[15][3]=0;a[15][4]=0;a[15][5]=0;a[15][6]=0;a[15][7]=0;a[15][8]=0;a[15][9]=0;a[15][10]=0;a[15][11]=0;a[15][12]=0;a[15][13]=0;a[15][14]=0;a[15][15]=0;a[15][16]=0;a[15][17]=0;a[15][18]=0;a[15][19]=0;
a[16][0]=0;a[16][1]=0;a[16][2]=0;a[16][3]=0;a[16][4]=0;a[16][5]=0;a[16][6]=0;a[16][7]=0;a[16][8]=0;a[16][9]=0;a[16][10]=0;a[16][11]=0;a[16][12]=0;a[16][13]=0;a[16][14]=0;a[16][15]=0;a[16][16]=0;a[16][17]=0;a[16][18]=0;a[16][19]=0;
a[17][0]=0;a[17][1]=0;a[17][2]=0;a[17][3]=0;a[17][4]=0;a[17][5]=0;a[17][6]=0;a[17][7]=0;a[17][8]=0;a[17][9]=0;a[17][10]=0;a[17][11]=0;a[17][12]=0;a[17][13]=0;a[17][14]=0;a[17][15]=0;a[17][16]=0;a[17][17]=0;a[17][18]=0;a[17][19]=0;
a[18][0]=0;a[18][1]=0;a[18][2]=0;a[18][3]=0;a[18][4]=0;a[18][5]=0;a[18][6]=0;a[18][7]=0;a[18][8]=0;a[18][9]=0;a[18][10]=0;a[18][11]=0;a[18][12]=0;a[18][13]=0;a[18][14]=0;a[18][15]=0;a[18][16]=0;a[18][17]=0;a[18][18]=0;a[18][19]=0;
a[19][0]=0;a[19][1]=0;a[19][2]=0;a[19][3]=0;a[19][4]=0;a[19][5]=0;a[19][6]=0;a[19][7]=0;a[19][8]=0;a[19][9]=0;a[19][10]=0;a[19][11]=0;a[19][12]=0;a[19][13]=0;a[19][14]=0;a[19][15]=0;a[19][16]=0;a[19][17]=0;a[19][18]=0;a[19][19]=0;
b[0][0]=0; b[0][1]=0; b[0][2]=0; b[0][3]=0; b[0][4]=0; b[0][5]=0; b[0][6]=0; b[0][7]=0; b[0][8]=0; b[0][9]=0; b[0][10]=0; b[0][11]=0; b[0][12]=0; b[0][13]=0; b[0][14]=0; b[0][15]=0; b[0][16]=0; b[0][17]=0; b[0][18]=0; b[0][19]=0;
b[1][0]=0; b[1][1]=0; b[1][2]=0; b[1][3]=0; b[1][4]=0; b[1][5]=0; b[1][6]=0; b[1][7]=0; b[1][8]=0; b[1][9]=0; b[1][10]=0; b[1][11]=0; b[1][12]=0; b[1][13]=0; b[1][14]=0; b[1][15]=0; b[1][16]=0; b[1][17]=0; b[1][18]=0; b[1][19]=0;
b[2][0]=0; b[2][1]=0; b[2][2]=0; b[2][3]=0; b[2][4]=0; b[2][5]=0; b[2][6]=0; b[2][7]=0; b[2][8]=0; b[2][9]=0; b[2][10]=0; b[2][11]=0; b[2][12]=0; b[2][13]=0; b[2][14]=0; b[2][15]=0; b[2][16]=0; b[2][17]=0; b[2][18]=0; b[2][19]=0;
b[3][0]=0; b[3][1]=0; b[3][2]=0; b[3][3]=0; b[3][4]=0; b[3][5]=0; b[3][6]=0; b[3][7]=0; b[3][8]=0; b[3][9]=0; b[3][10]=0; b[3][11]=0; b[3][12]=0; b[3][13]=0; b[3][14]=0; b[3][15]=0; b[3][16]=0; b[3][17]=0; b[3][18]=0; b[3][19]=0;
b[4][0]=0; b[4][1]=0; b[4][2]=0; b[4][3]=0; b[4][4]=0; b[4][5]=0; b[4][6]=0; b[4][7]=0; b[4][8]=0; b[4][9]=0; b[4][10]=0; b[4][11]=0; b[4][12]=0; b[4][13]=0; b[4][14]=0; b[4][15]=0; b[4][16]=0; b[4][17]=0; b[4][18]=0; b[4][19]=0;
b[5][0]=0; b[5][1]=0; b[5][2]=0; b[5][3]=0; b[5][4]=0; b[5][5]=0; b[5][6]=0; b[5][7]=0; b[5][8]=0; b[5][9]=0; b[5][10]=0; b[5][11]=0; b[5][12]=0; b[5][13]=0; b[5][14]=0; b[5][15]=0; b[5][16]=0; b[5][17]=0; b[5][18]=0; b[5][19]=0;
b[6][0]=0; b[6][1]=0; b[6][2]=0; b[6][3]=0; b[6][4]=0; b[6][5]=0; b[6][6]=0; b[6][7]=0; b[6][8]=0; b[6][9]=0; b[6][10]=0; b[6][11]=0; b[6][12]=0; b[6][13]=0; b[6][14]=0; b[6][15]=0; b[6][16]=0; b[6][17]=0; b[6][18]=0; b[6][19]=0;
b[7][0]=0; b[7][1]=0; b[7][2]=0; b[7][3]=0; b[7][4]=0; b[7][5]=0; b[7][6]=0; b[7][7]=0; b[7][8]=0; b[7][9]=0; b[7][10]=0; b[7][11]=0; b[7][12]=0; b[7][13]=0; b[7][14]=0; b[7][15]=0; b[7][16]=0; b[7][17]=0; b[7][18]=0; b[7][19]=0;
b[8][0]=0; b[8][1]=0; b[8][2]=0; b[8][3]=0; b[8][4]=0; b[8][5]=0; b[8][6]=0; b[8][7]=0; b[8][8]=0; b[8][9]=0; b[8][10]=0; b[8][11]=0; b[8][12]=0; b[8][13]=0; b[8][14]=0; b[8][15]=0; b[8][16]=0; b[8][17]=0; b[8][18]=0; b[8][19]=0;
b[9][0]=0; b[9][1]=0; b[9][2]=0; b[9][3]=0; b[9][4]=0; b[9][5]=0; b[9][6]=0; b[9][7]=0; b[9][8]=0; b[9][9]=0; b[9][10]=0; b[9][11]=0; b[9][12]=0; b[9][13]=0; b[9][14]=0; b[9][15]=0; b[9][16]=0; b[9][17]=0; b[9][18]=0; b[9][19]=0;
b[10][0]=0;b[10][1]=0;b[10][2]=0;b[10][3]=0;b[10][4]=0;b[10][5]=0;b[10][6]=0;b[10][7]=0;b[10][8]=0;b[10][9]=0;b[10][10]=0;b[10][11]=0;b[10][12]=0;b[10][13]=0;b[10][14]=0;b[10][15]=0;b[10][16]=0;b[10][17]=0;b[10][18]=0;b[10][19]=0;
b[11][0]=0;b[11][1]=0;b[11][2]=0;b[11][3]=0;b[11][4]=0;b[11][5]=0;b[11][6]=0;b[11][7]=0;b[11][8]=0;b[11][9]=0;b[11][10]=0;b[11][11]=0;b[11][12]=0;b[11][13]=0;b[11][14]=0;b[11][15]=0;b[11][16]=0;b[11][17]=0;b[11][18]=0;b[11][19]=0;
b[12][0]=0;b[12][1]=0;b[12][2]=0;b[12][3]=0;b[12][4]=0;b[12][5]=0;b[12][6]=0;b[12][7]=0;b[12][8]=0;b[12][9]=0;b[12][10]=0;b[12][11]=0;b[12][12]=0;b[12][13]=0;b[12][14]=0;b[12][15]=0;b[12][16]=0;b[12][17]=0;b[12][18]=0;b[12][19]=0;
b[13][0]=0;b[13][1]=0;b[13][2]=0;b[13][3]=0;b[13][4]=0;b[13][5]=0;b[13][6]=0;b[13][7]=0;b[13][8]=0;b[13][9]=0;b[13][10]=0;b[13][11]=0;b[13][12]=0;b[13][13]=0;b[13][14]=0;b[13][15]=0;b[13][16]=0;b[13][17]=0;b[13][18]=0;b[13][19]=0;
b[14][0]=0;b[14][1]=0;b[14][2]=0;b[14][3]=0;b[14][4]=0;b[14][5]=0;b[14][6]=0;b[14][7]=0;b[14][8]=0;b[14][9]=0;b[14][10]=0;b[14][11]=0;b[14][12]=0;b[14][13]=0;b[14][14]=0;b[14][15]=0;b[14][16]=0;b[14][17]=0;b[14][18]=0;b[14][19]=0;
b[15][0]=0;b[15][1]=0;b[15][2]=0;b[15][3]=0;b[15][4]=0;b[15][5]=0;b[15][6]=0;b[15][7]=0;b[15][8]=0;b[15][9]=0;b[15][10]=0;b[15][11]=0;b[15][12]=0;b[15][13]=0;b[15][14]=0;b[15][15]=0;b[15][16]=0;b[15][17]=0;b[15][18]=0;b[15][19]=0;
b[16][0]=0;b[16][1]=0;b[16][2]=0;b[16][3]=0;b[16][4]=0;b[16][5]=0;b[16][6]=0;b[16][7]=0;b[16][8]=0;b[16][9]=0;b[16][10]=0;b[16][11]=0;b[16][12]=0;b[16][13]=0;b[16][14]=0;b[16][15]=0;b[16][16]=0;b[16][17]=0;b[16][18]=0;b[16][19]=0;
b[17][0]=0;b[17][1]=0;b[17][2]=0;b[17][3]=0;b[17][4]=0;b[17][5]=0;b[17][6]=0;b[17][7]=0;b[17][8]=0;b[17][9]=0;b[17][10]=0;b[17][11]=0;b[17][12]=0;b[17][13]=0;b[17][14]=0;b[17][15]=0;b[17][16]=0;b[17][17]=0;b[17][18]=0;b[17][19]=0;
b[18][0]=0;b[18][1]=0;b[18][2]=0;b[18][3]=0;b[18][4]=0;b[18][5]=0;b[18][6]=0;b[18][7]=0;b[18][8]=0;b[18][9]=0;b[18][10]=0;b[18][11]=0;b[18][12]=0;b[18][13]=0;b[18][14]=0;b[18][15]=0;b[18][16]=0;b[18][17]=0;b[18][18]=0;b[18][19]=0;
b[19][0]=0;b[19][1]=0;b[19][2]=0;b[19][3]=0;b[19][4]=0;b[19][5]=0;b[19][6]=0;b[19][7]=0;b[19][8]=0;b[19][9]=0;b[19][10]=0;b[19][11]=0;b[19][12]=0;b[19][13]=0;b[19][14]=0;b[19][15]=0;b[19][16]=0;b[19][17]=0;b[19][18]=0;b[19][19]=0;
//--- print initial population --
//printf("INITIAL a\n");
print_matrix(a);
getchar();
printf("START -------------------------->\n\n");
//--- print next step -----------
//printf("INITIAL b\n");
//print_matrix(b);
//--- CALCULATING ---------------
for(step=0;step<iterations;step++)
{
printf("ITERATION %d\n",step);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i==0)
{
if(j==0)
{
sum = sumarround(a[0][1],a[1][0],a[1][1],a[0][N-2],a[0][N-1],a[N-2][0],a[N-1][0],a[N-1][N-1]);
//b[i][j]=2; // b[0][0]
b[i][j]=status(sum,b[i][j]); // b[0][0]
}
else if(j==N-1)
{
sum = sumarround(a[0][0],a[0][1],a[0][N-2],a[1][N-2],a[1][N-1],a[N-1][0],a[N-1][N-1],a[N-2][N-1]);
//b[i][j]=4; // b[0][N-1]
b[i][j]=status(sum,b[i][j]);
}
else
{
sum = sumarround(a[N-1][j-1],a[N-1][j],a[N-1][j+1], a[0][j-1],a[0][j+1], a[1][j-1],a[1][j],a[1][j+1]);
//b[i][j]=3; // b[0][*]
b[i][j]=status(sum,b[i][j]); // b[0][*]
}
}
else if(i==N-1)
{
if(j==0)
{
sum = sumarround(a[N-2][0],a[N-2][1],a[N-1][1], a[N-1][N-2],a[N-1][N-1], a[0][0],a[1][0], a[0][N-1]);
//b[i][j]=5; // b[N-1][0]
b[i][j]=status(sum,b[i][j]); // b[N-1][0]
}
else if(j==N-1)
{
sum = sumarround(a[N-2][N-2],a[N-2][N-1],a[N-1][0],a[N-1][1],a[N-1][N-2], a[1][N-1],a[0][N-1], a[0][0]);
//b[i][j]=7; //b[N-1][N-1]
b[i][j]=status(sum,b[i][j]); //b[N-1][N-1]
}
else
{
sum = sumarround(a[N-2][j-1],a[N-2][j],a[N-2][j+1], a[N-1][j-1],a[N-1][j+1], a[0][j-1],a[0][j],a[0][j+1]);
//b[i][j]=6; // b[N-1][8]
b[i][j]=status(sum,b[i][j]); // b[N-1][8]
}
}
else
{
if(j==0)
{
sum = sumarround(a[i-1][N-1],a[i-1][j],a[i-1][j+1], a[i][N-1],a[i][j+1], a[i+1][N-1],a[i+1][j],a[i+1][j+1]);
//sum = sumarround(a[i-1][N-1],a[i-1][j],a[i-1][j+1], a[i][N-1],a[i][j+1], !!!a[i+11][N-1]!!!,a[i+1][j],a[i+1][j+1]); !!!ERROR!!!
//b[i][j]=8; // b[*][0] (* != 0,N-1)
b[i][j]=status(sum,b[i][j]); // b[*][0] (* != 0,N-1)
}
else if(j==N-1)
{
sum = sumarround(a[i-1][j-1],a[i-1][j],a[i-1][0], a[i][j-1],a[i][0], a[i+1][j-1],a[i+1][j],a[i+1][0]);
// sum = sumarround(!!!a[i-1][j-2]!!!,a[i-1][j],a[i-1][0], a[i][j-1],a[i][0], a[i+1][j-1],a[i+1][j],a[i+1][0]); !!!Error!!!
//b[i][j]=9; // b[*][N-1] (* != 0,N-1)
b[i][j]=status(sum,b[i][j]); // b[*][N-1] (* != 0,N-1)
}
else
{
//sum = sumarround(a[i+1][j-1],a[i+1][j],a[i+1][j+1], a[i][j-1],a[i][j+1], a[i-1][j-1],a[i-1][j],a[i-1][j+1]);
sum = sumarround(a[i-1][j-1],a[i-1][j],a[i-1][j+1], a[i][j-1],a[i][j+1], a[i+1][j-1],a[i+1][j],a[i+1][j+1]);
//b[i][j]=1;
b[i][j]=status(sum,b[i][j]);
}
}
}
}
// printf("END CALCULATING\n");
//--- print next step -----------
//printf("NEXT STEP\n");
//print_matrix(b);
//--- writing b to a -----------
//printf("START WRITEING b TO a\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=b[i][j];
}
}
// printf("END WRITEING b TO a\n");
//--- printing a -----------
//printf("FINAL a\n");
print_matrix(a);
getchar();
}
return(0);
} |