this repo has no description
1/***
2!Test
3expected:
4- !Result
5 solution: !Solution
6 a: [1, 7, 1, 2, 6, 4, 2, 5, 3, 7, 4, 6, 3, 5]
7- !Result
8 solution: !Solution
9 a: [1, 7, 1, 2, 5, 6, 2, 3, 4, 7, 5, 3, 6, 4]
10- !Result
11 solution: !Solution
12 a: [2, 7, 4, 2, 3, 5, 6, 4, 3, 7, 1, 5, 1, 6]
13- !Result
14 solution: !Solution
15 a: [3, 6, 7, 1, 3, 1, 4, 5, 6, 2, 7, 4, 2, 5]
16- !Result
17 solution: !Solution
18 a: [2, 6, 7, 2, 1, 5, 1, 4, 6, 3, 7, 5, 4, 3]
19- !Result
20 solution: !Solution
21 a: [4, 1, 7, 1, 6, 4, 2, 5, 3, 2, 7, 6, 3, 5]
22- !Result
23 solution: !Solution
24 a: [2, 3, 7, 2, 6, 3, 5, 1, 4, 1, 7, 6, 5, 4]
25- !Result
26 solution: !Solution
27 a: [2, 4, 7, 2, 3, 6, 4, 5, 3, 1, 7, 1, 6, 5]
28- !Result
29 solution: !Solution
30 a: [3, 5, 7, 2, 3, 6, 2, 5, 4, 1, 7, 1, 6, 4]
31- !Result
32 solution: !Solution
33 a: [4, 6, 1, 7, 1, 4, 3, 5, 6, 2, 3, 7, 2, 5]
34- !Result
35 solution: !Solution
36 a: [1, 6, 1, 7, 2, 4, 5, 2, 6, 3, 4, 7, 5, 3]
37- !Result
38 solution: !Solution
39 a: [3, 4, 6, 7, 3, 2, 4, 5, 2, 6, 1, 7, 1, 5]
40- !Result
41 solution: !Solution
42 a: [1, 5, 1, 7, 3, 4, 6, 5, 3, 2, 4, 7, 2, 6]
43- !Result
44 solution: !Solution
45 a: [2, 6, 3, 2, 7, 4, 3, 5, 6, 1, 4, 1, 7, 5]
46- !Result
47 solution: !Solution
48 a: [2, 3, 6, 2, 7, 3, 4, 5, 1, 6, 1, 4, 7, 5]
49- !Result
50 solution: !Solution
51 a: [4, 1, 6, 1, 7, 4, 3, 5, 2, 6, 3, 2, 7, 5]
52- !Result
53 solution: !Solution
54 a: [1, 5, 1, 6, 7, 2, 4, 5, 2, 3, 6, 4, 7, 3]
55- !Result
56 solution: !Solution
57 a: [1, 4, 1, 6, 7, 3, 4, 5, 2, 3, 6, 2, 7, 5]
58- !Result
59 solution: !Solution
60 a: [1, 6, 1, 3, 5, 7, 4, 3, 6, 2, 5, 4, 2, 7]
61- !Result
62 solution: !Solution
63 a: [2, 6, 3, 2, 5, 7, 3, 4, 6, 1, 5, 1, 4, 7]
64- !Result
65 solution: !Solution
66 a: [5, 2, 6, 4, 2, 7, 5, 3, 4, 6, 1, 3, 1, 7]
67- !Result
68 solution: !Solution
69 a: [2, 5, 6, 2, 3, 7, 4, 5, 3, 6, 1, 4, 1, 7]
70- !Result
71 solution: !Solution
72 a: [5, 2, 4, 6, 2, 7, 5, 4, 3, 1, 6, 1, 3, 7]
73- !Result
74 solution: !Solution
75 a: [1, 5, 1, 6, 3, 7, 4, 5, 3, 2, 6, 4, 2, 7]
76- !Result
77 solution: !Solution
78 a: [1, 5, 1, 4, 6, 7, 3, 5, 4, 2, 3, 6, 2, 7]
79- !Result
80 solution: !Solution
81 a: [1, 4, 1, 5, 6, 7, 4, 2, 3, 5, 2, 6, 3, 7]
82***/
83
84% vim: ft=zinc ts=4 sw=4 et
85% Ralph Becket <rafe@csse.unimelb.edu.au>
86% Wed Feb 25 16:43:52 EST 2009
87%
88% Langford's problem (see e.g., http://www.lclark.edu/~miller/langford.html)
89% ------------------
90%
91% Arrange k sets of 1..n such that successive occurrences of any number, k,
92% are separated by k other numbers.
93
94% There should be 26 solutions to this problem.
95int: k = 2;
96int: n = 7;
97int: nk = n * k;
98
99array [1..nk] of var 1..n: a; % The sequence.
100array [1..n] of var 1..nk: Fst; % Fst[k] is position of first k.
101
102 % Break some symmetry.
103 %
104constraint a[1] <= a[nk];
105
106 % Prune some domains.
107 %
108constraint
109 forall ( i in 1..n ) ( Fst[i] <= nk - (k - 1) * (i + 1) );
110
111 % The nitty gritty.
112 %
113constraint
114 forall ( i in 1..n, j in 0..(k - 1) ) ( a[Fst[i] + j * (i + 1)] = i );
115
116solve :: int_search(Fst, first_fail, indomain_min, complete) satisfy;
117
118output ["a = ", show(a), ";\n"];