Warning: Attempt to read property "post_excerpt" on null in /sdb-disk/wwwroot/owlsudoku.com/wp-content/themes/newsup/inc/ansar/hooks/hook-index-main.php on line 116

### How to Create a 3×3 Sudoku Solver in C

#### Introduction

Sudoku is a popular puzzle game that requires players to fill a 9×9 grid with numbers so that each row, column, and 3×3 subgrid contains all of the digits from 1 to 9. In this article, we will guide you through the process of creating a simple 3×3 Sudoku solver using the C programming language. This will help you understand the basic principles of how Sudoku solvers work and can be expanded to solve larger grids.

#### Understanding the 3×3 Sudoku Grid

A 3×3 Sudoku grid is a smaller version of the traditional 9×9 grid. It consists of nine cells arranged in three rows and three columns. The goal is to fill the grid with numbers 1 to 9 such that each row, column, and the three 1×1 subgrids (top-left, top-right, bottom-left, bottom-right, middle-left, middle-right) contain all the numbers from 1 to 9 without repetition.

#### Step-by-Step Guide to Creating a 3×3 Sudoku Solver in C

1. **Initialize the Grid**: Start by creating a 3×3 array to represent the Sudoku grid. Initialize it with zeros or empty values.

“`c
int grid[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
“`

2. **Input the Known Numbers**: Allow the user to input the numbers that are already present in the grid. These numbers should be between 1 and 9.

“`c
printf(“Enter the known numbers (1-9) for the 3×3 Sudoku grid (e.g., 5 3 4 6 7 8 9 2 1):\n”);
for (int i = 0; i < 9; i++) { scanf("%d", &grid[i / 3][i % 3]); } ``` 3. **Check for Valid Input**: Ensure that the input numbers do not violate the Sudoku rules (i.e., no duplicate numbers in rows, columns, or subgrids). ```c for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { if (grid[i][k] == grid[k][j]) { printf("Invalid input: Duplicate number found in row or column.\n"); exit(1); } } } } ``` 4. **Implement the Solver Algorithm**: Use a backtracking algorithm to solve the Sudoku. This involves trying to place numbers in empty cells and backtracking when a conflict arises. ```c int solveSudoku(int grid[3][3]) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (grid[i][j] == 0) { for (int num = 1; num <= 9; num++) { if (isSafe(grid, i, j, num)) { grid[i][j] = num; if (solveSudoku(grid)) return 1; grid[i][j] = 0; } } return 0; } } } return 1; } int isSafe(int grid[3][3], int row, int col, int num) { for (int x = 0; x < 3; x++) { if (grid[row][x] == num || grid[x][col] == num) return 0; } return 1; } ``` 5. **Print the Solved Grid**: Once the solver finds a solution, print the solved Sudoku grid. ```c void printGrid(int grid[3][3]) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("%d ", grid[i][j]); } printf("\n"); } } ``` 6. **Run the Solver**: Call the `solveSudoku` function and then print the grid if a solution is found. ```c int main() { int grid[3][3] = {{5, 3, 4}, {6, 7, 8}, {1, 9, 2}}; if (solveSudoku(grid)) printGrid(grid); else printf("No solution exists.\n"); return 0; } ``` #### FAQ **Q: Can this code be modified to solve a 9x9 Sudoku?** A: Yes, the code can be easily modified to solve a 9x9 Sudoku by increasing the size of the grid and adjusting the `solveSudoku` and `isSafe` functions accordingly. **Q: What is backtracking?** A: Backtracking is a general algorithm for finding all (or some) solutions to some computational problems, notably constraint satisfaction problems, that incrementally builds candidates to the solutions, and abandons a candidate ("backtracks") as soon as it determines that the candidate cannot possibly be completed to a valid solution. **Q: How do I compile and run this C program?** A: To compile and run the program, save it to a file with a `.c` extension, such as `sudoku_solver.c`. Then, use a C compiler like `gcc` to compile the program and run it: ```sh gcc -o sudoku_solver sudoku_solver.c ./sudoku_solver ``` This will compile the program and create an executable named `sudoku_solver`, which you can run to solve the Sudoku puzzle.

Owl Sudoku | Dark Mode Sudoku for Night Owls - Play Free Online
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.