#include <stdio.h>
#include <stdlib.h>
 
#define FieldSize 20
#define TimeMax 20
 
/*フィールドの初期化 (ファイルの読み込み)*/
void init_field(int field[FieldSize][FieldSize], char *fname){
  int i,j;
  FILE *fp;
 
  if((fp=fopen(fname,"r"))==NULL){
    printf("init_field(): Cannot open \"%s\"\n",fname);
    exit(1);
  }
 
  for(i=0;i<FieldSize;i++){
    for(j=0;j<FieldSize;j++){
      fscanf(fp,"%d ",&field[i][j]);
    }
  }
  fclose(fp);
}
 
int count(int I, int J, int field[FieldSize][FieldSize]){
  int i,j;
  int i_tmp,j_tmp;
  int sum;
  
  sum=0;
  for(i=-1;i<=1;i++){
    for(j=-1;j<=1;j++){
   
    }
  }
  return sum;
}
 
void update_field(int field[FieldSize][FieldSize]){
  int i,j;
  int around;       
  int new_field[FieldSize][FieldSize]; 
 
  for(i=0;i<FieldSize;i++){
    for(j=0;j<FieldSize;j++){
      around=count(i,j,field);
    
if( (new_field[i][j] >= 3) && !(field[i][j]) ) {
    field[i][j]=1;
  }
  /* ˆÛŽ */
  else if ( ((new_field[i][j] == 2) || (new_field[i][j] == 3)) && (field[i][j]) ) {
    field[i][j]=1;
  }
  /* Ž€–S(‚»‚êˆÈŠO) */
  else {
    field[i][j]=0;
  }
  new_field[i][j]=0;
}
 
    }
        for(i = 0;i < 20;i++){
                for(j = 0;j < 20;j++){
                        field[i][j] = new_field[i][j];
                }
        }
 
        for(i=0;i<20;i++){
                for(j=0;j<20;j++){
                field[i][j] = new_field[i][j];
                if(field[i][j]==1){
                        printf("■");
                        }else{
                        printf("□");
                        }               
                }       
        printf("\n");
}
}
 
 
void display(int field[FieldSize][FieldSize]){
  int i,j;
 
 
for(i=0;i<20;i++){
        for(j=0;j<20;j++){
                if(field[i][j]==1){
                        printf("■");
                        }else{
                        printf("□");
                        }       
                }       
        printf("\n");
}
 
}
 
int main(int argc, char *argv[]){
  int t;
  int field[FieldSize][FieldSize];
  
  if(argc!=2){
    printf("実行方法 : ./a.out 初期状態のファイル\n");
  }
 
  //system("clear");
  init_field(field, argv[1]);
  //display(field);
  //sleep(1);
  //system("clear");
  for(t=0;t<TimeMax;t++){
    update_field(field);
    display(field);
    //sleep(1);
    //system("clear");
  }
 
  return 0;
}
 
 
/////////////////////////////////frog.dat
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

 
 
 
 