diff --git a/pj3.c b/pj3.c new file mode 100644 index 0000000..43acae6 --- /dev/null +++ b/pj3.c @@ -0,0 +1,90 @@ +#include +#include +bool isValidSudoku(char board[9][9]) +{ + bool rows[9][9] = { false }; + bool cols[9][9] = { false }; + bool boxes[9][9] = { false }; + for (int r = 0; r < 9; r++) + { + for (int c = 0; c < 9; c++) + { + if (board[r][c] != '.') + { + int num = board[r][c] - '1'; + int boxIndex = (r / 3) * 3 + (c / 3); + if (rows[r][num] || cols[c][num] || boxes[boxIndex][num]) + { + return false; + } + rows[r][num] = true; + cols[c][num] = true; + boxes[boxIndex][num] = true; + } + } + } + + return true; +} + +void printBoard(char board[9][9]) +{ + for (int r = 0; r < 9; r++) + { + for (int c = 0; c < 9; c++) + { + printf("%c ", board[r][c]); + } + printf("\n"); + } +} + +int main() +{ + char board0[9][9] = + { + {'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'} + }; + + char board1[9][9] = + { + {'8', '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'} + }; + + printf("The original Sudoku matrix (board0):\n"); + printBoard(board0); + if (isValidSudoku(board0)) { + printf("True: Valid initial Sudoku matrix!\n"); + } + else + { + printf("False: Invalid initial Sudoku matrix!\n"); + } + printf("\nThe original Sudoku matrix (board1):\n"); + printBoard(board1); + if (isValidSudoku(board1)) + { + printf("True: Valid initial Sudoku matrix!\n"); + } + else + { + printf("False: Invalid initial Sudoku matrix!\n"); + } + return 0; +}