LucaVinci110898

Sudoku/es9.c

Feb 14th, 2018
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1. #include "es9.h"
  2.  
  3. int verifica_riga(int campo[][DIM], int riga) {
  4.     int occ[DIM] = {0};
  5.     int c;
  6.  
  7.     if (riga < 0 || riga >= DIM) {
  8.         return 0;
  9.     }
  10.     for(c = 0; c < DIM; c++){
  11.         if(campo[riga][c] >= 1 && campo[riga][c] <= DIM){
  12.             occ[campo[riga][c]-1]++;
  13.         }
  14.     }
  15.     for(c = 0; c < DIM; c++){
  16.         if(occ[c] != 1){
  17.             return 0;
  18.         }
  19.     }
  20.     return 1;
  21. }
  22.  
  23. int verifica_colonna(int campo[][DIM], int colonna) {
  24.     int occ[DIM] = {0};
  25.     int c;
  26.  
  27.     if (colonna < 0 || colonna >= DIM){
  28.         return 0;
  29.     }
  30.     for(c = 0; c < DIM; c++){
  31.         if(campo[c][colonna] >= 1 && campo[c][colonna] <= DIM){
  32.             occ[campo[c][colonna]-1]++;
  33.         }
  34.     }
  35.     for(c = 0; c < DIM; c++){
  36.         if(occ[c] != 1){
  37.             return 0;
  38.         }
  39.     }
  40.     return 1;
  41. }
  42.  
  43. int verifica_riquadro(int campo[][DIM], int riga, int colonna) {
  44.     int occ[9] = {0};
  45.     int I,J,a;
  46.  
  47.     if(riga < 0 || riga > 6 || colonna < 0 || colonna > 6 ){
  48.         return 0;
  49.     }
  50.     for(I = riga; I < riga+3; I++){
  51.         for(J = colonna; J < colonna+3; J++){
  52.             if(campo[I][J] >= 1 && campo[I][J] <= 9){
  53.                 occ[campo[I][J] - 1]++;
  54.             }
  55.         }
  56.     }
  57.     for(a = 0; a < 9; a++){
  58.         if(occ[a] != 1){
  59.             return 0;
  60.         }
  61.     }
  62.     return 1;
  63. }
  64.  
  65. int verifica_campo(int campo[][DIM]) {
  66.     int i,j,r,c,a;
  67.     a = 0;
  68.     for(i = 0; i < DIM; i++){
  69.         if(verifica_riga(campo,i) != 1){
  70.             a  = 1;
  71.         }
  72.     }
  73.     for(j = 0; j < DIM; j++){
  74.         if(verifica_colonna(campo,j) != 1){
  75.             a = 1;
  76.         }
  77.     }
  78.     for(r = 0; r < DIM; r = r+3){
  79.         for(c = 0; c < DIM; c = c+3){
  80.             if(verifica_riquadro(campo,r,c) != 1){
  81.                 a = 1;
  82.             }  
  83.         }
  84.     }
  85.     if (a == 0){
  86.         return 1;
  87.     }
  88.     return 0;
  89.  
  90. }
Add Comment
Please, Sign In to add comment