sudoko 0.6.0

A comprehensive Sudoku solving library with multiple strategies, puzzle generation, and WebAssembly support
Documentation
use std::env;
use std::process;
use sudoko::generate_puzzle;
use sudoko::get_hint;
use sudoko::solve_from_file;
use sudoko::solve_puzzle;
use sudoko::validate_puzzle;

fn main() {
    let args: Vec<String> = env::args().collect();

    if args.len() < 2 {
        print_usage();
        process::exit(1);
    }

    match args[1].as_str() {
        "solve" => {
            if args.len() < 4 {
                eprintln!("Usage: {} solve <puzzle_string> <size>", args[0]);
                process::exit(1);
            }
            solve_puzzle(&args[2], &args[3]);
        }
        "solve-file" => {
            if args.len() < 4 {
                eprintln!("Usage: {} solve-file <file_path> <size>", args[0]);
                process::exit(1);
            }
            solve_from_file(&args[2], &args[3]);
        }
        "generate" => {
            if args.len() < 3 {
                eprintln!("Usage: {} generate <size> [difficulty]", args[0]);
                process::exit(1);
            }
            let difficulty = args.get(3).map(|s| s.as_str()).unwrap_or("medium");
            generate_puzzle(&args[2], difficulty);
        }
        "validate" => {
            if args.len() < 4 {
                eprintln!("Usage: {} validate <puzzle_string> <size>", args[0]);
                process::exit(1);
            }
            validate_puzzle(&args[2], &args[3]);
        }
        "hint" => {
            if args.len() < 4 {
                eprintln!("Usage: {} hint <puzzle_string> <size>", args[0]);
                process::exit(1);
            }
            get_hint(&args[2], &args[3]);
        }
        _ => {
            print_usage();
            process::exit(1);
        }
    }
}

fn print_usage() {
    println!("Sudoku Solver Library");
    println!("Usage:");
    println!("  solve <puzzle_string> <size>     - Solve a Sudoku puzzle");
    println!("  solve-file <file_path> <size>    - Solve a Sudoku from file");
    println!("  generate <size> [difficulty]     - Generate a new puzzle");
    println!("  validate <puzzle_string> <size>  - Validate a puzzle");
    println!("  hint <puzzle_string> <size>      - Get a hint for the next move");
    println!();
    println!("Sizes supported: 4 (2x2), 9 (3x3), 16 (4x4), 25 (5x5)");
    println!("Difficulties: easy, medium, hard, expert");
    println!();
    println!("Examples:");
    println!("  solve \"530070000600195000098000060800060003400803001700020006060000280000419005000080079\" 9");
    println!("  generate 9 hard");
    println!("  validate \"123456789456789123789123456234567891567891234891234567345678912678912345912345678\" 9");
}