Legend

Class
Struct
Enum
Interface
Delegate
Constructor
Method
Property
Event
Field

Class: PuzzleSolvers.AntiKnightConstraint

Summary

Describes a constraint in a number placement puzzle in which cells that are a knight’s move away from each other cannot contain the same value.

Constructors

AntiKnightConstraint(int gridWidth, int gridHeight, int[] affectedValues = null, IEnumerable<int> enforcedCells = null, bool toroidal = false)
Constructor.

Static methods

IEnumerable<int>
KnightsMoves(int cell, int gridWidth, int gridHeight, bool toroidal)
Returns the set of cells that are a knight’s move away from the specified cell.
int
TranslateCoordinate(string str, int gridWidth = 9)
Converts a convenient coordinate notation into a puzzle-grid index.
IEnumerable<int>
TranslateCoordinates(string str, int gridWidth = 9)
Converts a convenient coordinate notation into puzzle-grid indices.

Instance methods

ConstraintResultOverride; see base.

Instance properties

int[]The group of cells affected by this constraint, or null if it affects all of them.
int[]Optionally specifies a limited set of values that are affected by the constraint.
bool By default, a constraint is only evaluated once for every digit placed in the grid, but not when another constraint merely rules out a possibility. Derived types can override this and return true to indicate to the solver that the constraint should be reevaluated (meaning: have Constraint.Process(SolverState) called on it again) when another constraint rules out a value in one of the affected cells of this constraint.
int[] Optionally specifies a limited set of cells on which the constraint is enforced. (see also remarks)
intThe height of the grid.
intThe width of the grid.
int? Indicates an approximate number of possible combinations of digits this constraint can still accommodate. This will help the solver prioritize cells when multiple cells have the same number of combinations individually.
bool If true, the constraint considers the grid to be toroidal, meaning that it wraps around the left/right and top/bottom edges. Thus, in a Sudoku-sized grid, A1 would be a knight’s move away from B8 and H2. If false, the knight’s move cannot extend beyond the bounds of the grid.