this repo has no description
1/*** 2!Test 3expected: 4- !Result 5 solution: !Solution 6 puzzle: 7 - [5, 9, 3, 7, 6, 2, 8, 1, 4] 8 - [2, 6, 8, 4, 3, 1, 5, 7, 9] 9 - [7, 1, 4, 9, 8, 5, 2, 3, 6] 10 - [3, 2, 6, 8, 5, 9, 1, 4, 7] 11 - [1, 8, 7, 3, 2, 4, 9, 6, 5] 12 - [4, 5, 9, 1, 7, 6, 3, 2, 8] 13 - [9, 4, 2, 6, 1, 8, 7, 5, 3] 14 - [8, 3, 5, 2, 4, 7, 6, 9, 1] 15 - [6, 7, 1, 5, 9, 3, 4, 8, 2] 16***/ 17 18% 19%-----------------------------------------------------------------------------% 20% Sudoku for squares of arbitrary size N = (S x S) 21%-----------------------------------------------------------------------------% 22 23int: S; 24int: N = S * S; 25 26 27array[1..N,1..N] of var 1..N: puzzle; 28 29 30include "alldifferent.mzn"; 31 32 % All cells in a row, in a column, and in a subsquare are different. 33constraint 34 forall(i in 1..N)( alldifferent(j in 1..N)( puzzle[i,j] )) 35 /\ 36 forall(j in 1..N)( alldifferent(i in 1..N)( puzzle[i,j] )) 37 /\ 38 forall(i,j in 1..S) 39 ( alldifferent(p,q in 1..S)( puzzle[S*(i-1)+p, S*(j-1)+q] )); 40 41 42solve satisfy; 43 44 45output [ "sudoku:\n" ] ++ 46 [ show(puzzle[i,j]) ++ 47 if j = N then 48 if i mod S = 0 /\ i < N then "\n\n" else "\n" endif 49 else 50 if j mod S = 0 then " " else " " endif 51 endif 52 | i,j in 1..N ]; 53 54%-----------------------------------------------------------------------------% 55% 56% The data for the puzzle that causes satz to make 1 backtrack (normally none 57% are made). 58% 59 60S=3; 61puzzle=[| 62_, _, _, _, _, _, _, _, _| 63_, 6, 8, 4, _, 1, _, 7, _| 64_, _, _, _, 8, 5, _, 3, _| 65_, 2, 6, 8, _, 9, _, 4, _| 66_, _, 7, _, _, _, 9, _, _| 67_, 5, _, 1, _, 6, 3, 2, _| 68_, 4, _, 6, 1, _, _, _, _| 69_, 3, _, 2, _, 7, 6, 9, _| 70_, _, _, _, _, _, _, _, _| 71|]; 72