아하 로고
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
대찬사슴293
대찬사슴29322.07.09

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칸에 세포가 살아 있다면 해당 칸의 세포는 살아있는 상태를 유지한다.

  • 그 이외의 경우 해당 칸의 세포는 다음 세대에 고립돼 죽거나 혹은 주위가 너무 복잡해져서 죽는다. 혹은 죽은 상태를 유지한다.

이런 규칙을 가지는 프로그램인데

어디가 잘못된 것일까요? ㅠㅠ

자세한 답변 부탁드려요

55글자 더 채워주세요.
답변의 개수아직 답변이 없어요.