0
LOADING...
Auto-solve
  • Select a cell and type a number to set a value.
  • Drag or Shift+click to select multiple cells. This selection can be used to add line or region constraints.
  • Select an arrow outside the grid to set outside clues such as Little Killer or Skyscraper constraints.

See the help page for more information.

(Source)

Load constraint from text

Stats by runtime

Loading…

Constraints

Multiple values

Lines & Sets

Select cells by dragging or shift-clicking.

Shape

Global constraints

Layout constraints

Outside clues

Select a row, column or diagonal arrow outside the grid.

Custom JavaScript constraints

Create constraints between pairs of cells by providing a custom JavaScript function.

Name:
Chain handling :
// Return true if the cell values a and b are // a valid pair. // Example: a < b (thermometer constraint)
constraintCheck = (a, b) =>

Define a finite-state machine using JavaScript transition and accept functions. The constraint will be satisfied the state-machine reaches an accept state after processing the cells in order.

NUM_CELLS is available as the number of currently selected cells.

Tip: You can use console.log to debug your state machine.

Name:
// The initial state(s). States can be any // JSON-serializable value, except arrays. // Use an array for multiple start states.
startState = ;
// transition takes the current state and // cell value and returns the next state, or // an array of states. Returning undefined or // the empty array generates no next states.
function transition(state, value) { }
// accept returns true when the state is a // valid final state.
function accept(state) { }
// Max depth for state creation (optional).
maxDepth = ;

Composite constraints

Select a composite constraint by clicking on its chip to add constraints to it. Panels which allow constraints to be added to the composite will be highlighted in yellow.