basic/
basic.rs

1use sodo::{Cell, Solver, Sudoku};
2
3fn main() {
4    // Create empty 9x9 sudoku
5    let mut sudoku = Sudoku::new(9);
6
7    // Set some values
8    sudoku.set(0, 0, 5).unwrap();
9    sudoku.set(0, 1, 3).unwrap();
10    sudoku.set(0, 4, 7).unwrap();
11
12    // Check validity
13    println!("Valid: {}", sudoku.is_valid());
14    println!("Complete: {}", sudoku.is_complete());
15
16    // Get candidates for a cell
17    let candidates = sudoku.candidates(0, 2);
18    println!("Candidates at (0,2): {:?}", candidates);
19
20    // Check cell state
21    match sudoku.get(0, 0) {
22        Some(Cell::Filled(v)) => println!("Cell (0,0) = {v}"),
23        Some(Cell::Given(v)) => println!("Cell (0,0) = {v} (given)"),
24        Some(Cell::Empty) => println!("Cell (0,0) is empty"),
25        None => println!("Out of bounds"),
26    }
27
28    // Get hint
29    let solver = Solver::new();
30    if let Some((r, c, val)) = solver.hint(&sudoku) {
31        println!("Hint: Place {val} at ({r}, {c})");
32    }
33}