// 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!
*/