Here is the solver code for any 9x9 sudoku
Here is the C Code to solve the soduku Puzzle. #include int sod[10][10],given[10][10],chances[10]; main() { int i,j,c,previous=0,fcolumn=-1,frow=-1; FILE *fp; fp = fopen("data.txt","r"); for(i=0;i<9;i++) for(j=0;j<9;j++) { fscanf(fp,"%d",&sod[i][j]); if(sod[i][j]!=0) given[i][j]=1; else { if ( fcolumn == -1 ){ fcolumn = j; frow = i; } given[i][j]=0; } } fclose(fp); fp = fopen("output_soduku.txt","w"); for(i=0;i<9;i++) for(j=0;j<9;j++) { if(given[i][j]==0) { do { cellchances(i,j); for(c=1;c<10;c++) if(chances[c]!=0 && chances[c] > previous) { sod[i][j]=chances[c]; previous=0; break; } if(i == frow && j == fcolumn && c == 10 ) { fprintf(fp,"GIVEN SODUKU WRONGLY ENTERED"); return; } if(c==10) { sod[i][j]=0; do { if(j==0 && i!=frow ) { i--; j=8; } else if(j!=0 ) j--; if(given[i][j]==0) { previous=sod[i][j]; sod[i][j]=0; } }while(given[i][j]!=0); } }while(c==10); } } fprintf(fp,"THE OUPUT OF GIVEN SODUKU :\n"); for(i=0;i<9;i++) { for(j=0;j<9;j++) fprintf(fp,"%d ",sod[i][j]); fprintf(fp,"\n"); } } cellchances(int x,int y) { int p,h,v,ch; for(p=1;p<10;p++) { chances[p]=p; for(ch=0;ch<9;ch++) { if(sod[x][ch] == p) chances[p]=0; if(sod[ch][y] == p) chances[p]=0; } for(h=x-(x%3);h
#include int sod[10][10],given[10][10],chances[10]; main() { int i,j,c,previous=0,fcolumn=-1,frow=-1; FILE *fp; fp = fopen("data.txt","r"); for(i=0;i<9;i++) for(j=0;j<9;j++) { fscanf(fp,"%d",&sod[i][j]); if(sod[i][j]!=0) given[i][j]=1; else { if ( fcolumn == -1 ){ fcolumn = j; frow = i; } given[i][j]=0; } } fclose(fp); fp = fopen("output_soduku.txt","w"); for(i=0;i<9;i++) for(j=0;j<9;j++) { if(given[i][j]==0) { do { cellchances(i,j); for(c=1;c<10;c++) if(chances[c]!=0 && chances[c] > previous) { sod[i][j]=chances[c]; previous=0; break; } if(i == frow && j == fcolumn && c == 10 ) { fprintf(fp,"GIVEN SODUKU WRONGLY ENTERED"); return; } if(c==10) { sod[i][j]=0; do { if(j==0 && i!=frow ) { i--; j=8; } else if(j!=0 ) j--; if(given[i][j]==0) { previous=sod[i][j]; sod[i][j]=0; } }while(given[i][j]!=0); } }while(c==10); } } fprintf(fp,"THE OUPUT OF GIVEN SODUKU :\n"); for(i=0;i<9;i++) { for(j=0;j<9;j++) fprintf(fp,"%d ",sod[i][j]); fprintf(fp,"\n"); } } cellchances(int x,int y) { int p,h,v,ch; for(p=1;p<10;p++) { chances[p]=p; for(ch=0;ch<9;ch++) { if(sod[x][ch] == p) chances[p]=0; if(sod[ch][y] == p) chances[p]=0; } for(h=x-(x%3);h