this repo has no description
1int: n; % number of queens
2set of int: ROW = 1..n;
3set of int: COL = 1..n;
4array[int] of int: q; % col of queen in each row
5
6test check(bool: b,string: s) =
7 if b then true else trace_stdout("ERROR: "++s++"\n",false) endif;
8
9output [
10 if check(index_set(q)=1..n, "ERROR: array q should have index set 1..\(n)")
11 /\ forall(i in 1..n)(check(q[i] in 1..n, "ERROR: q[\(i)] should have a value in 1..\(n)"))
12 /\ forall(r1, r2 in 1..n where r1 < r2)
13 (check(q[r1] != q[r2],
14 "queens in rows \(r1) and \(r2) are on same column\n")
15 /\
16 check(q[r1]+r1 != q[r2]+r2,
17 "queens in rows \(r1) and \(r2) are on same up diagonal\n")
18 /\
19 check(q[r1]-r1 != q[r2]-r2,
20 "queens in rows \(r1) and \(r2) are on same down diagonal\n")
21 )
22 then "CORRECT: All constraints hold"
23 else "INCORRECT" endif ];