How to check if a 3x3 grid is a valid Sudoku grid in C

1 Answer

0 votes
#include <stdio.h>
#include <stdbool.h>

// Sudoku solution must satisfy all of the following rules:
// Each of the digits 1-9 must occur once in each row.
// Each of the digits 1-9 must occur once in each column.
// Each of the digits 1-9 must occur once in each 3x3 grid.

#define SIZE 3

bool isValidSudoku3x3Grid(int grid[SIZE][SIZE]) {
    int seen[10] = {0}; // Array to track numbers 1-9

    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            int num = grid[i][j];

            if (num < 1 || num > 9 || seen[num]) {
                return false; // Invalid if number is out of range or repeated
            }
            seen[num] = 1;
        }
    }
    
    return true; // Valid if all numbers 1-9 appear exactly once
}

void printResult(bool valid) {
    if (valid) {
        printf("The grid is a valid Sudoku grid!\n");
    } else {
        printf("The grid is NOT a valid Sudoku grid!\n");
    }
}

int main() {
    int grid[SIZE][SIZE] = {
        {5, 3, 4},
        {6, 7, 2},
        {1, 9, 8}
    };

    printResult(isValidSudoku3x3Grid(grid));
    
    return 0;
}



/*
run:

The grid is a valid Sudoku grid!

*/

 



answered May 30, 2025 by avibootz
edited May 30, 2025 by avibootz

Related questions

1 answer 115 views
1 answer 120 views
1 answer 186 views
1 answer 171 views
1 answer 146 views
...