mstoyanov7

sudoku validator

Apr 21st, 2022
974
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. bool numberChecker(string curr){
  2.     vector<bool> numbers = { true, false, false, false, false, false, false, false, false, false };
  3.     for (auto& c : curr) {
  4.         int num = c - '0';
  5.         if (numbers[num] == true) return false;
  6.         numbers[num] = true;
  7.     }
  8.     for (int i = 1; i < numbers.size(); ++i) if (numbers[i] == false) return false;
  9.     return true;
  10. }
  11.  
  12. bool solution(vector<vector<int>> grid) {
  13.     for (int i = 0; i < 9; ++i) {
  14.         string currRow;
  15.         for (int j = 0; j < 9; ++j) {
  16.             currRow += grid[i][j] + '0';
  17.         }
  18.         if (!numberChecker(currRow)) return false;
  19.     }
  20.  
  21.     for (int i = 0; i < 9; ++i) {
  22.         string currCol;
  23.         for (int j = 0; j < 9; ++j) {
  24.             currCol += grid[j][i] + '0';
  25.         }
  26.         if (!numberChecker(currCol)) return false;
  27.     }
  28.     int rounds = 9;
  29.     int sX = 0, eX = 2, sY = 0, eY = 2;
  30.     while (rounds--) {
  31.         string block;
  32.         for (int i = sX; i <= eX; ++i) {
  33.             for (int j = sY; j <= eY; ++j) {
  34.                 block += grid[i][j] + '0';
  35.             }
  36.         }
  37.         if (!numberChecker(block)) return false;
  38.         if (rounds == 8) { sX = 0; eX = 2; sY = 3; eY = 5; }
  39.         if (rounds == 7) { sX = 0; eX = 2; sY = 6; eY = 8; }
  40.         if (rounds == 6) { sX = 0; eX = 2; sY = 0; eY = 2; }
  41.         if (rounds == 5) { sX = 3; eX = 5; sY = 3; eY = 5; }
  42.         if (rounds == 4) { sX = 3; eX = 5; sY = 6; eY = 8; }
  43.         if (rounds == 3) { sX = 3; eX = 5; sY = 0; eY = 2; }
  44.         if (rounds == 2) { sX = 6; eX = 8; sY = 3; eY = 5; }
  45.         if (rounds == 1) { sX = 6; eX = 8; sY = 6; eY = 8; }
  46.     }
  47.     return true;
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment