
Describes a constraint in which a specified set of cells must have one of a specified set of value
combinations, but they may be reordered arbitrarily. 

Describes a constraint in a number placement puzzle in which cells that are diagonal from each other (like a
bishop’s move in chess) cannot contain the same value. 

Describes a constraint in a number placement puzzle in which cells that are at specific relative placements from
one another cannot contain the same value. 

Describes a constraint that mandates that two samesize regions cannot contain the exact same digits.


Describes a constraint in a number placement puzzle where no adjacent cells (including diagonals) can have the
same value. 

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. 

Describes a “battlefield” constraint: the first and last number in the region represent the sizes of two armies,
who march inward; the clue specifies the sum of the digits that are sandwiched between the armies or that are
within the armies’ overlap. This constraint implies a uniqueness constraint. 

Describes a “between line” constraint: every digit within the BetweenLineConstraint.InnerCells must lie numerically
between the values in cells BetweenLineConstraint.Cap1 and BetweenLineConstraint.Cap2 (exclusive). 
 Describes a Binairo (Binary Puzzle, TohuwaVohu) puzzle. 

Describes a constraint where two regions of the grid must be identical (“clones”). 

Describes a constraint in which a specified set of cells must have one of a specified set of exact value
combinations. 

Describes a “Renban cage”: the numbers within the region must be unique and form a set of consecutive integers
(though not necessarily in order). 
 Abstract base class for all constraints in a puzzle. 

Return this from a call to Constraint.Process(SolverState) to indicate that this constraint should
be replaced with a given set of other constraints (which can be empty to remove this constraint). 
 Base class for classes describing the result of a call to Constraint.Process(SolverState). 

Return this from a call to Constraint.Process(SolverState) to indicate that the constraint is
already violated. 

Describes the function signature required for a LambdaConstraint. See Constraint.Process(SolverState) for parameter and return value documentation. 

Describes a constraint in a numberplacement puzzle (such as Sudoku) where several regions must have the same sum,
but the sum is not given. 
 Contains an algorithm for solving Fillomino puzzles. This solver is independent of Puzzle. 

Describes a constraint in a numberplacement puzzle that indicates that whatever value the specified FindTheValueConstraint.Cell contains, the cell that many steps away must contain FindTheValueConstraint.Value. 

Constrains five cells to values that satisfy a lambda expression. 

Constrains four cells to values that satisfy a lambda expression. 

Describes a FrameSum Sudoku, which is surrounded by numbers. Every number indicates the sum of the first few
cells visible from that location. Between minLength and maxLength cells may be included in that sum. 
 Describes a given in a puzzle (a value already prefilled at the start). 

Describes a constraint in which a specific region of cells must sum up to the value in another cell. In a variant
Sudoku, this is often represented as an arrow coming out of a circle, and hence, the variant is known as “Arrow
Sudoku”. 
 Describes a Sudoku puzzle with irregular regions. 
 Encapsulates a 9×9 Sudoku puzzle with Killer cages (sum + uniqueness constraints). 

Describes a constraint that will solve a Kyudoku puzzle given a 6×6 grid of numbers 1–9. The solution will contain
a 0 for marked cells and a 1 for struckout cells. 
 Can be used to describe any constraint that applies to the whole puzzle using a lambda expression. 
 Describes a standard 9×9 Sudoku puzzle. 

Describes a constraint in a numberplacement puzzle (such as a Thermometer Sudoku) where a series of cells must be
in ascending order. 

Describes a constraint in a numberplacement grid puzzle where no adjacent cells can have numerically consecutive
values. 
 Contains methods to deal with Nonogram puzzles. 

Describes a constraint in a numberplacement grid puzzle where the values in orthogonally adjacent cells (NOT
including diagonals) cannot have the same remainder modulo a fixed quotient. 
 Contains an algorithm for solving Numberlink puzzles. This solver does not use Puzzle. 
 Describes a constraint in which a group of cells can be only all evens or all odds. 
 Describes the specific flavor of an OddEvenConstraint. 

Describes a constraint where two regions of the grid must be identical (“clones”) except that one is plus or minus
a consistent offset from the other. 
 Constrains a single cell to values that satisfy a lambda expression. 
 Describes a composite constraint in which one of a set of constraints must be met. 

Describes a constraint that mandates that there must be an equal number of odd and even values in a row. This is a
subset of the rules of Binairo. 

Describes a constraint in a numberplacement puzzle that mandates that the parity (odd/evenness) of the values
cannot form triplets in a row/column. 

Describes a constraint in a numberplacement puzzle that mandates that the parities (odd/evenness) of the values
must form different patterns in every row and column. 
 Describes a CombinationsConstraint that also implies a UniquenessConstraint. 

Describes a constraint in which a specific region of cells must have a specified product (multiplication). 
 Describes a puzzle. 
 Contains extension methods for code related to PuzzleSolvers. 

Describes a Sudoku variant in which numbers written outside the grid describe the sum of the digits in that
row/column that are sandwiched between two specific values (usually 1 and 9). 

Describes a “sandwich” constraint: the numbers sandwiched between two specific numbers must sum up to a specified
total. This constraint implies a uniqueness constraint. The two specified numbers can be in any order. 

Describes a “sandwich wraparound” constraint: the numbers that follow a specific number and precede a specific
other number, wrapping around the grid if necessary, must sum up to a specified total. This constraint implies a
uniqueness constraint. 

Constrains six cells to values that satisfy a lambda expression. 
 Represents a Skyscraper puzzle. 

Describes a “skyscraper” constraint: the numbers in the grid represent the height of a skyscraper; taller
skyscrapers obscure the view of smaller ones behind them; and the clue specifies how many skyscrapers are visible
from the direction of the clue. This constraint implies a uniqueness constraint. 
 Provides functions to solve Slitherlink puzzles. This solver does not use Puzzle. 

Use this to instruct the puzzle solver (Puzzle.Solve(SolverInstructions)) to perform certain types
of analysis for the debugging of constraint implementations. 

Encapsulates information given to Constraint implementations (in a call to Constraint.Process(SolverState)) during the puzzle solving algorithm. 
 Describes a standard 9×9 Sudoku puzzle. 

Describes a constraint in a numberplacement puzzle where either one of several regions must have a specified sum. 

Describes a constraint in which a specific region of cells must sum up to a specified value. 

Describes a constraint in which a specific region of cells must have a specified value as either its sum or its
product. 

Describes a “killer cage”: the numbers within the region must be unique and sum up to a specified total. 
 Constrains three cells to values that satisfy a lambda expression. 
 Constrains two cells to values that satisfy a lambda expression. 
 Describes a constraint that mandates that a region of cells must have different values. 

Describes an “Xsum” constraint: the first X numbers must sum up to a specified total, where X is the first of
those digits. This constraint implies a uniqueness constraint. 