Challenge - 5 Problems
Sudoku Solver Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of Partial Sudoku Board After One Backtracking Step
Given the initial Sudoku board and one step of backtracking filling the first empty cell, what is the board state?
DSA C
int board[9][9] = { {5,3,0,0,7,0,0,0,0}, {6,0,0,1,9,5,0,0,0}, {0,9,8,0,0,0,0,6,0}, {8,0,0,0,6,0,0,0,3}, {4,0,0,8,0,3,0,0,1}, {7,0,0,0,2,0,0,0,6}, {0,6,0,0,0,0,2,8,0}, {0,0,0,4,1,9,0,0,5}, {0,0,0,0,8,0,0,7,9} }; // After one backtracking step, the first empty cell (row 0, col 2) is filled with 4. board[0][2] = 4; // Print the board row 0 printf("%d %d %d %d %d %d %d %d %d\n", board[0][0], board[0][1], board[0][2], board[0][3], board[0][4], board[0][5], board[0][6], board[0][7], board[0][8]);
Attempts:
2 left
💡 Hint
The first empty cell in the top-left 3x3 box is at row 0, column 2. The number 4 fits there without breaking Sudoku rules.
✗ Incorrect
Backtracking tries numbers from 1 to 9 in the first empty cell. 4 is the first valid number that does not conflict with existing numbers in the row, column, or 3x3 box.
🧠 Conceptual
intermediate1:30remaining
Why Backtracking is Suitable for Sudoku Solving
Why is backtracking a good method to solve Sudoku puzzles?
Attempts:
2 left
💡 Hint
Think about how backtracking explores choices and undoes wrong ones.
✗ Incorrect
Backtracking systematically tries numbers in empty cells and undoes choices if they lead to conflicts, ensuring a valid solution.
🔧 Debug
advanced2:30remaining
Identify the Bug in Sudoku Validity Check Function
What is wrong with this validity check function for Sudoku?
DSA C
int isValid(int board[9][9], int row, int col, int num) { for (int x = 0; x < 9; x++) { if (board[row][x] == num && x != col) return 0; if (board[x][col] == num && x != row) return 0; } int startRow = row - row % 3; int startCol = col - col % 3; for (int i = startRow; i < startRow + 3; i++) { for (int j = startCol; j < startCol + 3; j++) { if (board[i][j] == num && (i != row || j != col)) return 0; } } return 1; }
Attempts:
2 left
💡 Hint
Check if the function compares the cell with itself when checking row and column.
✗ Incorrect
The function checks the entire row and column including the current cell, so if the current cell already has num, it returns false incorrectly.
❓ Predict Output
advanced3:00remaining
Final Sudoku Board After Complete Backtracking
What is the final solved Sudoku board after running the backtracking solver on this puzzle?
DSA C
int board[9][9] = { {5,3,0,0,7,0,0,0,0}, {6,0,0,1,9,5,0,0,0}, {0,9,8,0,0,0,0,6,0}, {8,0,0,0,6,0,0,0,3}, {4,0,0,8,0,3,0,0,1}, {7,0,0,0,2,0,0,0,6}, {0,6,0,0,0,0,2,8,0}, {0,0,0,4,1,9,0,0,5}, {0,0,0,0,8,0,0,7,9} }; // After solving, the board is: // 5 3 4 6 7 8 9 1 2 // 6 7 2 1 9 5 3 4 8 // 1 9 8 3 4 2 5 6 7 // 8 5 9 7 6 1 4 2 3 // 4 2 6 8 5 3 7 9 1 // 7 1 3 9 2 4 8 5 6 // 9 6 1 5 3 7 2 8 4 // 2 8 7 4 1 9 6 3 5 // 3 4 5 2 8 6 1 7 9
Attempts:
2 left
💡 Hint
The final solved board has no zeros and respects Sudoku rules in all rows, columns, and boxes.
✗ Incorrect
Option A shows the fully solved Sudoku board with all cells filled correctly. Other options have zeros indicating incomplete or incorrect solutions.
🚀 Application
expert2:00remaining
Time Complexity of Sudoku Solver Using Backtracking
What is the worst-case time complexity of a Sudoku solver using backtracking on a 9x9 board?
Attempts:
2 left
💡 Hint
Consider the maximum number of choices per empty cell and total empty cells.
✗ Incorrect
Backtracking tries up to 9 numbers in each of the 81 cells in the worst case, leading to O(9^81) complexity.