0
LOADING...

Tip: Solver runs fastest on Chrome

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. The settings menu in the top-right has advanced features.

(Source)

Load constraint from text

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.