#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <math.h>

int main (void)
{
 unsigned int xsize=160,ysize=100,res,xcnt,ycnt,res_val,brightnes=126;
 unsigned int im_data[400][400],num_of_files=0,binzahl=0,i;
 FILE* inpfile;
 DIR* dir;
 struct dirent* files;
 char filename[100],filenumstr[5];
 files=(struct dirent*) calloc(1,sizeof(struct dirent*));
 
 if ((dir=opendir("../pic"))==NULL) { perror("opendir"); exit(-1); }
   while((files=readdir(dir))!=NULL){num_of_files++; } 
 closedir(dir); num_of_files=num_of_files-2;
 
 if ((dir=opendir("../pic"))==NULL) { perror("opendir"); exit(-1); }
 
 fprintf(stdout,"SNNS pattern definition file V3.2\n");
 fprintf(stdout,"generated at Mon Apr 25 15:58:23 1994\n\n\n");
 fprintf(stdout,"No. of patterns : %d\n",num_of_files);
 fprintf(stdout,"No. of input units : 16000\n");
 fprintf(stdout,"No. of output units : 16\n\n");

 
 while((files=readdir(dir))!=NULL){
   if(files->d_name[0]!='.'){
     strcpy(filename,"../pic/");
     strcat(filename,files->d_name);
     fprintf(stderr,"NAME:%s\n",filename);
     if ((inpfile=fopen(filename,"r"))==NULL) { perror("fopen"); exit(-1); }

     fprintf (stderr,"FORMAT: %c",fgetc(inpfile));
     fprintf (stderr,"%c \n",fgetc(inpfile));
     fscanf(inpfile,"%d",&xsize);
     fscanf(inpfile,"%d",&ysize);
     fprintf (stderr,"SIZE: %d %d \n",xsize,ysize);
     fscanf(inpfile,"%d",&res);
     fprintf (stderr,"RESOLUTION: %d \n",res);

     for (ycnt=0;ycnt<ysize;ycnt++)
       for (xcnt=0;xcnt<xsize;xcnt++)
       {       fscanf(inpfile,"%d",&im_data[xcnt][ycnt]);     }
     fclose(inpfile);
 
     fprintf(stdout,"# Input pattern %s:\n",filename);
     for (ycnt=0;ycnt<ysize;ycnt++){
       for (xcnt=0;xcnt<xsize;xcnt++){
         if (im_data[xcnt][ycnt]<brightnes)
           { fputc('0',stdout); } else { fputc('1',stdout); }
         fputc(' ',stdout);
       }
     }
     fprintf(stdout,"\n# Output pattern %s:\n",filename);
     filenumstr[0]=files->d_name[3];filenumstr[1]=files->d_name[4];
     filenumstr[2]=files->d_name[5];filenumstr[3]=files->d_name[6];
     filenumstr[4]=0;
     sscanf(filenumstr,"%d",&binzahl);
     for(i=15;i>0;i--){
       if(binzahl >= (int)pow(2.0,i) ){
         binzahl = binzahl - (int)pow(2.0,i); fprintf(stdout,"1 ");
       }else{fprintf(stdout,"0 ");}
     }
     if(binzahl == 1 ){ fprintf(stdout,"1 "); }else{fprintf(stdout,"0 ");}
     fprintf(stdout,"\n");
   }
 }
 closedir(dir);
}
