Show / Hide Table of Contents

Class PuzzleSolver<TPuzzle>

Solves puzzles of the given type using an ExactCoverGraph.

Inheritance
System.Object
PuzzleSolver<TPuzzle>
Implements
IPuzzleSolver<TPuzzle>
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: SudokuSpice.ConstraintBased
Assembly: SudokuSpice.dll
Syntax
public class PuzzleSolver<TPuzzle> : IPuzzleSolver<TPuzzle> where TPuzzle : class, IPuzzle<TPuzzle>
Type Parameters
Name Description
TPuzzle

The type of puzzle to solve.

Remarks

This class is thread-safe as long as the given constraints' implementations of TryConstrain(IReadOnlyPuzzle, ExactCoverGraph) are also thread-safe. If that's true, then it's safe to solve multiple puzzles concurrently via the same solver object.

Constructors

| Improve this Doc View Source

PuzzleSolver(IConstraint[])

Creates a solver that can solve puzzles using the given IConstraints. The same solver can be reused for multiple puzzles.

Declaration
public PuzzleSolver(IConstraint[] constraints)
Parameters
Type Name Description
IConstraint[] constraints

The constraints to satisfy when solving puzzles.

Methods

| Improve this Doc View Source

ComputeStatsForAllSolutions(TPuzzle, Nullable<CancellationToken>)

Finds stats for all the solutions to the given puzzle. The puzzle is left unchanged.

Declaration
public SolveStats ComputeStatsForAllSolutions(TPuzzle puzzle, CancellationToken? token = default(CancellationToken? ))
Parameters
Type Name Description
TPuzzle puzzle
System.Nullable<System.Threading.CancellationToken> token
Returns
Type Description
SolveStats
Exceptions
Type Condition
System.OperationCanceledException

May be thrown if the given cancellation token is canceled during the operation.

| Improve this Doc View Source

HasUniqueSolution(TPuzzle, Nullable<CancellationToken>)

Determines if the given puzzle has a unique solution. The puzzle is left unchanged.

Declaration
public bool HasUniqueSolution(TPuzzle puzzle, CancellationToken? token = default(CancellationToken? ))
Parameters
Type Name Description
TPuzzle puzzle
System.Nullable<System.Threading.CancellationToken> token
Returns
Type Description
System.Boolean
Exceptions
Type Condition
System.OperationCanceledException

May be thrown if the given cancellation token is canceled during the operation.

| Improve this Doc View Source

Solve(TPuzzle, Boolean)

Solves the given puzzle in place.

Declaration
public TPuzzle Solve(TPuzzle puzzle, bool randomizeGuesses = false)
Parameters
Type Name Description
TPuzzle puzzle

The puzzle to solve. This will be copied instead of solved in-place.

System.Boolean randomizeGuesses

If true, this will guess in a random order when forced to guess. Else, the guessing order is up to the implementation, but it should be stable.

Returns
Type Description
TPuzzle

A solved copy of the given puzzle.

Exceptions
Type Condition
System.ArgumentException

Thrown if this puzzle can't be solved by this solver.

| Improve this Doc View Source

TrySolve(TPuzzle, Boolean)

Attempts to solve the given puzzle.

Declaration
public bool TrySolve(TPuzzle puzzle, bool randomizeGuesses = false)
Parameters
Type Name Description
TPuzzle puzzle

The puzzle to solve. This will be solved in place.

System.Boolean randomizeGuesses

If true, this will guess in a random order when forced to guess. Else, the guessing order is up to the implementation, but it should be stable.

Returns
Type Description
System.Boolean

Implements

IPuzzleSolver<TPuzzle>
  • Improve this Doc
  • View Source
In This Article
Back to top Generated by DocFX