Download
language ESSENCE' 1.0
given N : int(1..)
given start : matrix indexed by [int(1..N), int(1..N)] of int(0..N)
find puzzle : matrix indexed by [int(1..N), int(1..N), int(1..N)] of int(0..1)
such that
$ initial board respected
forAll i : int(1..N) .
forAll j : int(1..N) .
start[i,j] > 0 -> puzzle[i,j,start[i,j]] = 1,
$ every row's number is distinct
forAll i : int(1..N) .
forAll k : int(1..N) .
sum(puzzle[i,..,k]) = 1,
$ every column's number is distinct
forAll j : int(1..N) .
forAll k : int(1..N) .
sum(puzzle[..,j,k]) = 1,
$ each "number" must have a number assigned
forAll i : int(1..N) .
forAll j : int(1..N) .
sum(puzzle[i,j,..]) = 1