this repo has no description
1include "alldifferent.mzn";
2
3int: n; % number of marks on ruler
4int: m; % max length of ruler
5
6array[1..n] of var 0..m: mark;
7array[1..n,1..n] of var 0..m: diffs;
8
9constraint mark[1] = 0;
10constraint forall ( i in 1..n-1 ) ( mark[i] < mark[i+1] );
11constraint forall (i,j in 1..n where i > j) % (diff)
12 (diffs[i,j] = mark[i] - mark[j]); % (diff)
13constraint alldifferent([ diffs[i,j] | i,j in 1..n where i > j]);
14constraint diffs[2,1] < diffs[n,n-1]; % symmetry break
15
16solve satisfy;
17
18output ["marks = ",show(mark),"\n"];