c언어 콘웨이의 생명 게임 질문입니다
#include<stdio.h>
int main(){
int arr[7][7] = {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,1,0,0,0},{0,0,1,1,1,0,0},{0,0,0,1,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}};
int brr[7][7] = {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,1,0,0,0},{0,0,1,1,1,0,0},{0,0,0,1,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}};
int i,j,a=0,cnt=0;
while( a <3){
for(i = 0 ; i <= 6 ; i++){
for(j = 0 ; j <= 6 ; j++){
if(i > 0 and j == 0){
if(arr[(i-1)%7][6] == 1){
cnt+=1;
}
if(arr[(i-1)%7][(j)%7] == 1){
cnt= cnt + 1;
}
if(arr[(i-1)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i)%7][6] == 1){
cnt = cnt + 1;
}
if(arr[(i)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][6] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[i][j] == 0 and cnt == 3){
brr[i][j] = 1;
}
if(arr[i][j] == 1 and (cnt == 2 or cnt == 3)){
brr[i][j] = 1;
}
else{
brr[i][j] = 0;
}
}
if(i == 0 and j > 0){
if(arr[(6)%7][(j-1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(6)%7][(j)%7] == 1){
cnt = cnt + 1;
}
if(arr[(6)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i)%7][(j-1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j-1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[i][j] == 0 and cnt == 3){
brr[i][j] = 1;
}
if(arr[i][j] == 1 and (cnt == 2 or cnt == 3)){
brr[i][j] = 1;
}
else{
brr[i][j] = 0;
}
}
if(i == 0 and j == 0){
if(arr[(6)%7][(6)%7] == 1){
cnt = cnt + 1;
}
if(arr[(6)%7][(j)%7] == 1){
cnt = cnt + 1;
}
if(arr[(6)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i)%7][(6)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(6)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[i][j] == 0 and cnt == 3){
brr[i][j] = 1;
}
if(arr[i][j] == 1 and (cnt == 2 or cnt == 3)){
brr[i][j] = 1;
}
else{
brr[i][j] = 0;
}
}
if(i > 0 and j > 0){
if(arr[(i-1)%7][(j-1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i-1)%7][(j)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i-1)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i)%7][(j-1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j-1)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j)%7] == 1){
cnt = cnt + 1;
}
if(arr[(i+1)%7][(j+1)%7] == 1){
cnt = cnt + 1;
}
if(arr[i][j] == 0 and cnt == 3){
brr[i][j] = 1;
}
if(arr[i][j] == 1 and (cnt == 2 or cnt == 3)){
brr[i][j] = 1;
}
else{
brr[i][j] = 0;
}
}
cnt = 0;
}
}
for(i = 0 ; i <= 6 ; i++){
for(j = 0 ; j <= 6; j++){
arr[i][j] = brr[i][j];
}
}
for(i = 0 ; i <= 6 ; i++){
for(j = 0 ; j <= 6; j++){
printf("%d ",brr[i][j]);
}
printf("\n");
}
printf("\n");
}
}
죽은 칸과 인접한 8칸 중 정확히 3칸에 세포가 살아 있다면 해당 칸의 세포는 그 다음 세대에 살아난다.
살아있는 칸과 인접한 8칸 중 2칸 혹은 3칸에 세포가 살아 있다면 해당 칸의 세포는 살아있는 상태를 유지한다.
그 이외의 경우 해당 칸의 세포는 다음 세대에 고립돼 죽거나 혹은 주위가 너무 복잡해져서 죽는다. 혹은 죽은 상태를 유지한다.
이런 규칙을 가지는 프로그램인데
어디가 잘못된 것일까요? ㅠㅠ
자세한 답변 부탁드려요