this repo has no description
1include "alldifferent.mzn";
2
3int: n;
4
5% Posición de cada número.
6array[1..n] of var 1..n: y;
7
8% Posición de la diferencia i.
9array[1..n-1] of var 1..n-1: v;
10
11constraint alldifferent(y);
12
13constraint alldifferent(v);
14
15constraint forall(i,j in 1..n where i < j)(
16 (y[i] - y[j] = 1 -> v[j-i] = y[j]) /\
17 (y[j] - y[i] = 1 -> v[j-i] = y[i])
18 );
19
20constraint abs(y[1] - y[n]) = 1 /\ v[n-1] = min(y[1], y[n]);
21
22solve :: int_search(y, first_fail, indomain_min, complete)
23 satisfy;
24
25output [ "x = [",] ++
26 [ show(i) ++ if j == n then "]\n;" else ", " endif
27 | j in 1..n, i in 1..n where j == fix(y[i]) ];