Advertisement
TheTintin

Jean

Jan 11th, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. bool hasDigitInLine(int grid[9][9], int y, int digit)
  6. {
  7.     int x=0;
  8.     for (x; x<9; x++)
  9.     {
  10.         if(grid[x][y]==digit) return true;
  11.     }
  12.     return false;
  13. }
  14. bool hasDigitInColumn(int grid[9][9], int x, int digit)
  15. {
  16.     int y=0;
  17.     for (y; y<9; y++)
  18.     {
  19.         if(grid[x][y]==digit) return true;
  20.     }
  21.     return false;
  22. }
  23. bool hasDigitInArea(int grid[9][9], int x, int y, int digit)
  24. {
  25.     int i=0, j=0;
  26.     i=x-(x%3);
  27.     j=y-(y%3);
  28.     for(x=i; x<i+3; x++)
  29.     {
  30.         for(y=j; y<j+3; y++)
  31.         {
  32.             if(grid[x][y]==digit) return true;
  33.         }
  34.     }
  35.     return false;
  36. }
  37. void printGrid(int grid[9][9])
  38. {
  39.     int i, j;
  40.     printf("\n===========\n");
  41.     for(i = 0; i < 9; i++)
  42.     {
  43.         for(j = 0; j < 9; j++)
  44.         {
  45.             printf("%d", grid[i][j]);
  46.             if ((j == 2) || (j == 5)) printf("|");
  47.         }
  48.         printf("\n");
  49.         if ((i == 2) || (i == 5)) printf("-----------\n");
  50.     }
  51.     printf("===========\n");
  52. }
  53. void solver(int grid[9][9], int x, int y)
  54. {
  55.     int i;
  56.     if(grid[x][y]==0)
  57.     {
  58.         for(i=1; i<10; i++)
  59.         {
  60.             if((!hasDigitInLine(grid,y,i)) && (!hasDigitInColumn(grid,x,i)) && (!hasDigitInArea(grid,x,y,i)))
  61.             {
  62.                 grid[x][y]=i;
  63.                 printf("x=%d y=%d i=%d\n", x, y, i);
  64.                 x++;
  65.                 if(x==9)
  66.                 {
  67.                     x=0;
  68.                     y++;
  69.                 }
  70.                 if((x==0) && (y==9))
  71.                 {
  72.                     return;
  73.                 }*/
  74.                 //solver(grid,x,y);
  75.             }
  76.         }
  77.         grid[x][y]=0;
  78.     }
  79.     else
  80.     {
  81.         x++;
  82.         if(x==9)
  83.         {
  84.             x=0;
  85.             y++;
  86.         }
  87.         //resolver(grid,x,y);
  88.         return;
  89.     }
  90. }
  91. int main()
  92. {
  93.     int grid[9][9] = {
  94.     0,8,0,  7,9,0,  0,0,0,
  95.     0,0,0,  0,0,2,  0,9,0,
  96.     0,0,3,  0,0,8,  4,5,0,
  97.  
  98.     0,0,8,  0,0,0,  0,0,1,
  99.     0,9,6,  0,0,0,  3,7,0,
  100.     3,0,0,  0,0,0,  2,0,0,
  101.  
  102.     0,3,2,  5,0,0,  9,0,0,
  103.     0,4,0,  8,0,0,  0,0,0,
  104.     0,0,0,  0,6,4,  0,2,0
  105.     };
  106.     printGrid(grid);
  107.     solver(grid,0,0);
  108.     printGrid(grid);
  109.     return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement