solokiller11

Maman13 - Sudoku

Dec 6th, 2021
879
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. /**
  3.  * Write a description of class Sudoku here.
  4.  *
  5.  * @author (your name)
  6.  * @version (a version number or a date)
  7.  */
  8. public class Sudoku
  9. {
  10.     private static final int ROW_COUNT = 3;
  11.     private static final int COL_COUNT = 3;
  12.    
  13.     private Square3x3[][] _board;
  14.    
  15.     /**
  16.      * Initialize a Sudoku board object
  17.      */
  18.     public Sudoku()
  19.     {
  20.         _board = new Square3x3[ROW_COUNT][COL_COUNT];
  21.        
  22.         for(int i = 0; i < ROW_COUNT; i++)
  23.         {
  24.             for(int j = 0; j < COL_COUNT; j++)
  25.             {
  26.                 _board[i][j] = new Square3x3();
  27.             }
  28.         }
  29.     }
  30.    
  31.     /**
  32.      * Initialize a Sudoku board object from a given array
  33.      * @param square3x3Array - given array to create board from
  34.      */
  35.     public Sudoku(Square3x3[][] square3x3Array)
  36.     {
  37.         _board = new Square3x3[ROW_COUNT][COL_COUNT];
  38.        
  39.         for(int i = 0; i < ROW_COUNT; i++)
  40.         {
  41.             for(int j = 0; j < COL_COUNT; j++)
  42.             {
  43.                 _board[i][j] = new Square3x3(square3x3Array[i][j]);
  44.             }
  45.         }
  46.     }
  47.    
  48.     /**
  49.      * Returns if the board is a valid sudoku board
  50.      */
  51.     public boolean isValid()
  52.     {
  53.         // row loop
  54.         for(int i = 0; i < _board.length; i++)
  55.         {
  56.             // column loop
  57.             for(int j = 0; j < _board[i].length; j++)
  58.             {
  59.                 // validating square, row, column
  60.                 if(!(checkSquare(i, j) && checkRow(i, j) && checkCol(i, j)))
  61.                 {
  62.                     return false;
  63.                 }
  64.             }
  65.         }
  66.        
  67.         return true;
  68.     }
  69.    
  70.     private boolean checkSquare(int row, int col)
  71.     {
  72.         return _board[row][col].allThere();
  73.     }
  74.    
  75.     // row - board row
  76.     // subRow - inner square row
  77.     private boolean checkRow(int row, int subRow)
  78.     {
  79.         // values array for checking
  80.         boolean[] vals = {false, false, false, false, false, false, false, false, false, false};
  81.        
  82.         // looping all squares in the given row of the board
  83.         for(int i = 0; i < _board[row].length; i++)
  84.         {
  85.             _board[row][i].whosThereRow(subRow, vals);
  86.         }
  87.        
  88.         // checking that all values are present
  89.         for(int i = 1; i < vals.length; i++)
  90.         {
  91.             if(!vals[i])
  92.             {
  93.                 return false;
  94.             }
  95.         }
  96.        
  97.         return true;
  98.     }
  99.    
  100.     // col - board row
  101.     // subCol - inner square row
  102.     private boolean checkCol(int col, int subCol)
  103.     {
  104.         // values array for checking
  105.         boolean[] vals = {false, false, false, false, false, false, false, false, false, false};
  106.        
  107.         // looping all squares in the given row of the board
  108.         for(int i = 0; i < 3; i++)
  109.         {
  110.             _board[i][col].whosThereCol(subCol, vals);
  111.         }
  112.        
  113.         // checking that all values are present
  114.         for(int i = 1; i < vals.length; i++)
  115.         {
  116.             if(!vals[i])
  117.             {
  118.                 return false;
  119.             }
  120.         }
  121.        
  122.         return true;
  123.     }
  124. }
  125.  
RAW Paste Data