bruce965 / QuickSudoku

Sudoku puzzle solver (DONE), grader (WIP), and generator (WIP)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

QuickSudoku

Sudoku puzzle solver, grader, and generator.

This project is an incomplete work-in-progress.

CLI Usage

QuickSudoku Solver 0.2.1-alpha
Copyright (c) 2022 Fabio Iotti.

Usage:
  Solver --generate
  cat "(puzzle scheme)" | Solver --in
  Solver "(puzzle scheme)"

Puzzle scheme format:
  53. .7. ...
  6.. 195 ...
  .98 ... .6.

  8.. .6. ..3
  4.. 8.3 ..1
  7.. .2. ..6

  .6. ... 28.
  ... 419 ..5
  ... .8. .79

To generate a new random puzzle, grade it, and print the solution:

Solver --generate

To print the step-by-step solution for an existing puzzle:

# Bash (Unix shell)

Solver "
  53. .7. ...
  6.. 195 ...
  .98 ... .6.

  8.. .6. ..3
  4.. 8.3 ..1
  7.. .2. ..6

  .6. ... 28.
  ... 419 ..5
  ... .8. .79
"
:: Windows cmd.exe

(
  echo 53. .7. ...
  echo 6.. 195 ...
  echo .98 ... .6.

  echo 8.. .6. ..3
  echo 4.. 8.3 ..1
  echo 7.. .2. ..6

  echo .6. ... 28.
  echo ... 419 ..5
  echo ... .8. .79
) | Solver --in

Library Usage

To generate a new easy puzzle:

var puzzle = SudokuGenerator.Generate(new()
{
    Symmetry = SudokuSymmetry.Full,
    LimitStrategy = SudokuSolutionStrategy.HiddenPair,
});

for (var y = 0; y < 9; y++)
{
    for (var x = 0; x < 9; x++)
    {
        Console.Write("{0}", puzzle[x, y].Value?.ToString() ?? " ");
    }

    Console.WriteLine();
}

To solve and grade a puzzle:

var puzzle = SudokuPuzzle.FromScheme(@"
    53. .7. ...
    6.. 195 ...
    .98 ... .6.

    8.. .6. ..3
    4.. 8.3 ..1
    7.. .2. ..6

    .6. ... 28.
    ... 419 ..5
    ... .8. .79
");

var solution = SudokuSolver.Solve(puzzle);

Console.WriteLine("Difficulty: {0}", solution.Difficulty);

License

Source code in this repository is licensed under the MIT license.

About

Sudoku puzzle solver (DONE), grader (WIP), and generator (WIP)

License:MIT License


Languages

Language:C# 100.0%