this repo has no description
1/*** 2!Test 3expected: 4- !Result 5 solution: !Solution 6 q: 7 - [0, 0, 0, 0, 0, 0, 0, 1] 8 - [0, 0, 0, 1, 0, 0, 0, 0] 9 - [1, 0, 0, 0, 0, 0, 0, 0] 10 - [0, 0, 1, 0, 0, 0, 0, 0] 11 - [0, 0, 0, 0, 0, 1, 0, 0] 12 - [0, 1, 0, 0, 0, 0, 0, 0] 13 - [0, 0, 0, 0, 0, 0, 1, 0] 14 - [0, 0, 0, 0, 1, 0, 0, 0] 15- !Result 16 solution: !Solution 17 q: 18 - [0, 0, 0, 1, 0, 0, 0, 0] 19 - [0, 0, 0, 0, 0, 1, 0, 0] 20 - [0, 0, 0, 0, 0, 0, 0, 1] 21 - [0, 0, 1, 0, 0, 0, 0, 0] 22 - [1, 0, 0, 0, 0, 0, 0, 0] 23 - [0, 0, 0, 0, 0, 0, 1, 0] 24 - [0, 0, 0, 0, 1, 0, 0, 0] 25 - [0, 1, 0, 0, 0, 0, 0, 0] 26- !Result 27 solution: !Solution 28 q: 29 - [0, 0, 0, 0, 1, 0, 0, 0] 30 - [0, 0, 0, 0, 0, 0, 0, 1] 31 - [0, 0, 0, 1, 0, 0, 0, 0] 32 - [1, 0, 0, 0, 0, 0, 0, 0] 33 - [0, 0, 0, 0, 0, 0, 1, 0] 34 - [0, 1, 0, 0, 0, 0, 0, 0] 35 - [0, 0, 0, 0, 0, 1, 0, 0] 36 - [0, 0, 1, 0, 0, 0, 0, 0] 37***/ 38 39% n-queens example in Zinc using IP techniques 40% By Ralph Becket 41 42% MiniZinc version 43% Peter Stuckey September 30 2006 44 45int: n = 8; 46 47set of int: rg = 0 .. n-1; 48 49array [rg, rg] of var 0 .. 1: q :: add_to_output; 50 51% 52% Every row and column has exactly one queen. 53% Every diagonal has at most one queen. 54% 55 56constraint forall (i in rg) ( 57 ( sum (j in rg) (q[i, j]) = 1 ) 58/\ ( sum (j in rg) (q[j, i]) = 1 ) 59/\ ( sum (j, k in rg where j - k = i) (q[j, k]) <= 1 ) 60/\ ( sum (j, k in rg where j - k = - i) (q[j, k]) <= 1 ) 61/\ ( sum (j, k in rg where j - k = i) (q[n - 1 - j, k]) <= 1 ) 62/\ ( sum (j, k in rg where j - k = - i) (q[n - 1 - j, k]) <= 1 ) 63); 64 65% 66% Find the first solution. 67% 68 69solve :: 70 int_search( 71 array1d(1..n*n, q), 72 first_fail, 73 indomain_min, 74 complete 75 ) 76 satisfy; 77 78output ["8 queens, IP version:"] ++ 79 [ if j = 0 then "\n" else "" endif ++ 80 if fix(q[i, j]) = 1 then "Q " else ". " endif 81 | i, j in rg 82 ] ++ 83 [ "\n" ];