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

1 Answer

0 votes
// 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.

use std::collections::HashSet;

fn is_valid_sudoku_3x3_grid(grid: &[Vec<i32>]) -> bool {
    if grid.len() != 3 || grid[0].len() != 3 {
        return false; // Ensure it's a 3x3 grid
    }

    let mut seen = HashSet::new();
    for row in grid {
        for &num in row {
            if num < 1 || num > 9 || seen.contains(&num) {
                return false; // Invalid if number is out of range or repeated
            }
            seen.insert(num);
        }
    }

    true // Valid if all numbers 1-9 appear exactly once
}

fn print_result(valid: bool) {
    if valid {
        println!("The grid is a valid Sudoku grid!");
    } else {
        println!("The grid is NOT a valid Sudoku grid!");
    }
}

fn main() {
    let grid = vec![
        vec![5, 3, 4],
        vec![6, 7, 2],
        vec![1, 9, 8],
    ];

    print_result(is_valid_sudoku_3x3_grid(&grid));
}

   
    
/*
run:
    
The grid is a valid Sudoku grid!
    
*/

 



answered May 30, 2025 by avibootz

Related questions

...