diff --git a/ValidSudokuCheck/ValidSudokuCheck.cpp b/ValidSudokuCheck/ValidSudokuCheck.cpp new file mode 100644 index 0000000..6e26cd7 --- /dev/null +++ b/ValidSudokuCheck/ValidSudokuCheck.cpp @@ -0,0 +1,107 @@ +//This program checks wether the sudoku entered is a valid sudoku(solvable) or not. +#include +using namespace std; + +void print(vector> board){ + //printing the sudoku + for(auto it=board.begin();it!=board.end();it++){ + for(auto ij=(*it).begin();ij!=(*it).end();ij++){ + printf("%c ",*ij); + } + printf("\n"); + } +} + +bool isValidSudoku(vector>& board) { + //checking for row + //check for unique numbers + for(auto it=board.begin();it!=board.end();it++){ + set s; + for(auto ij=(*it).begin();ij!=(*it).end();ij++){ + if(*ij!='.'){ + //finding unique numbers(represented as characters here) + if(s.find(*ij)==s.end()){ + s.insert(*ij); + } + else + return false; + } + } + } + //checking for column + //check for unique numbers + for(int i=0;i<9;i++){//9X9 dimension + set s; + for(int j=0;j<9;j++){ + if(board[j][i]!='.'){ + //finding unique numbers(represented as characters here) + if(s.find(board[j][i])==s.end()){ + s.insert(board[j][i]); + } + else + return false; + } + } + } + //checking for sub-boxes + //check for unique numbers + for(int x=0;x<9;x=x+3){ + for(int i=0;i<9;i=i+3){ + set s; + for(int j=x;j> a{ + {'5','3','.','.','7','.','.','.','.'}, + {'6','.','.','1','9','5','.','.','.'}, + {'.','9','8','.','.','.','.','6','.'}, + {'8','.','.','.','6','.','.','.','3'}, + {'4','.','.','8','.','3','.','.','1'}, + {'7','.','.','.','2','.','.','.','6'}, + {'.','6','.','.','.','.','2','8','.'}, + {'.','.','.','4','1','9','.','.','5'}, + {'.','.','.','.','8','.','.','7','9'}}; + + print(a); + + if(isValidSudoku(a)) + cout<<"It's a valid one"<> b{ + {'5','3','.','.','7','.','.','.','.'}, + {'6','.','.','1','9','5','.','.','.'}, + {'.','9','8','.','.','.','.','6','.'}, + {'8','.','.','.','6','.','.','.','3'}, + {'4','.','.','8','.','3','.','.','1'}, + {'7','.','.','.','2','.','.','.','6'}, + {'.','6','.','.','.','.','2','8','.'}, + {'.','.','.','4','1','9','.','.','5'}, + {'.','.','.','.','8','.','.','9','9'}}; + + print(b); + + if(isValidSudoku(b)) + cout<<"It's a valid one"<