Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.03 KB | None | 0 0
  1. #include <stdio.h>
  2. //Puzzle: http://www.puzzles.ca/sudoku_puzzles/sudoku_easy_183.html Solution: http://www.puzzles.ca/sudoku_puzzles/sudoku_easy_183_solution.html
  3. int main(){
  4.     int boxStart;
  5.     int horLineStart;
  6.     int vertLineStart;
  7.     int x[82];
  8.     int numbersAvailable[10];
  9.     int numberOfZero;
  10.     for (int i = 1; i < 82; i++){x[i] = 0;}
  11.     x[1] = 8;//Rad1
  12.     x[2] = 3;
  13.     x[7] = 9;
  14.     x[8] = 1;
  15.  
  16.     x[10] = 5;//Rad2
  17.     x[17] = 2;
  18.  
  19.     x[19] = 6;//Rad3
  20.     x[20] = 2;
  21.     x[21] = 4;
  22.     x[22] = 3;
  23.     x[27] = 8;
  24.    
  25.     x[28] = 9;//rad4
  26.     x[34] = 3;
  27.     x[35] = 5;
  28.     x[36] = 7;
  29.  
  30.     x[39] = 1;//rad5
  31.     x[40] = 7;
  32.     x[42] = 5;
  33.     x[45] = 9;
  34.  
  35.     x[53] = 8;//rad6
  36.    
  37.     x[62] = 9;//rad7
  38.  
  39.     x[64] = 2;//rad8
  40.     x[65] = 6;
  41.     x[68] = 3;
  42.  
  43.     x[76] = 2;//rad9
  44.     x[77] = 5;
  45.     x[81] = 6;
  46.  
  47.     for (int i = 1; i <= 3; i++){
  48.         boxStart =
  49.         numberOfZero = 0;
  50.         for (int a = 1; a <= 9; a++){
  51.             numbersAvailable[a] = a;
  52.         }
  53.         //Remove numbers in the box(3x3) from numbersAvailable
  54.         for (int c = 0; c < 3; c++){
  55.             for (int b = 0; b < 3; b++){
  56.                 for (int a = 1; a <= 9; a++){
  57.                     if (x[i + b + (c*9)] == a){
  58.                         numbersAvailable[a] = 0;
  59.                     }
  60.                 }
  61.             }
  62.         }
  63.         //Remove numbers from horizontal line
  64.         for (int b = 0; b < 9; b++){
  65.             for (int a = 1; a <= 9; a++){
  66.                 if (x[i+b] == a){
  67.                     numbersAvailable[a] = 0;
  68.                 }
  69.             }
  70.         }
  71.         //Remove numbers from Vertical line
  72.         for (int b = 0; b < 9; b++){
  73.             for (int a = 1; a <= 9; a++){
  74.                 if (x[i + (b*9)] == a){
  75.                     numbersAvailable[a] = 0;
  76.                 }
  77.             }
  78.         }
  79.         /*Reads number of zeroes in numbersAvailable
  80.         for (int a = 1; a <= 9; a++){
  81.             if (numbersAvailable[a] = 0)
  82.                 numberOfZero++;
  83.         }
  84.         */
  85.         //Puts a new number in the box.
  86.         if (x[i] != 0 && numberOfZero == 8){
  87.             for (int a = 1; a < 9; a++){
  88.                 if (numbersAvailable[a] != 0){
  89.                     x[i] = numbersAvailable[a];
  90.                 }
  91.             }
  92.         }
  93.         if ((i-1) % 9 == 0){
  94.             printf("\n");
  95.         }
  96.         //printf("%d ",x[i]);
  97.         //Print numbersAvailable
  98.         for (int a = 1; a <= 9; a++){
  99.             printf("%d ", numbersAvailable[a]);
  100.         }
  101.         printf("\n");
  102.     }
  103.     getchar();
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement