forked from rte-france/or-tools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
alien.fzn
56 lines (56 loc) · 9.79 KB
/
alien.fzn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
array [1..49] of int: s = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
array [1..49] of int: t = [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0];
array [1..49] of var 0..10: d;
array [1..49] of var 0..3: x :: output_array([1..7, 1..7]);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[1], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[15], x[22], x[29], x[36], x[43]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[2], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[9], x[16], x[23], x[30], x[37], x[44]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[3], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[10], x[17], x[24], x[31], x[38], x[45]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[4], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[11], x[18], x[25], x[32], x[39], x[46]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[5], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[12], x[19], x[26], x[33], x[40], x[47]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[6], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[13], x[20], x[27], x[34], x[41], x[48]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[7], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[14], x[21], x[28], x[35], x[42], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[8], x[1], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[22], x[29], x[36], x[43]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[9], x[2], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[16], x[23], x[30], x[37], x[44]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[10], x[3], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[17], x[24], x[31], x[38], x[45]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[11], x[4], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[18], x[25], x[32], x[39], x[46]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[12], x[5], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[19], x[26], x[33], x[40], x[47]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[13], x[6], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[20], x[27], x[34], x[41], x[48]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[14], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[21], x[28], x[35], x[42], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[15], x[1], x[8], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[22], x[29], x[36], x[43]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[16], x[2], x[9], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[23], x[30], x[37], x[44]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[17], x[3], x[10], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[24], x[31], x[38], x[45]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[18], x[4], x[11], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[25], x[32], x[39], x[46]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[19], x[5], x[12], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[26], x[33], x[40], x[47]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[20], x[6], x[13], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[27], x[34], x[41], x[48]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[21], x[7], x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[28], x[35], x[42], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[22], x[1], x[8], x[15], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[29], x[36], x[43]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[23], x[2], x[9], x[16], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[30], x[37], x[44]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[24], x[3], x[10], x[17], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[31], x[38], x[45]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[25], x[4], x[11], x[18], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[32], x[39], x[46]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[26], x[5], x[12], x[19], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[33], x[40], x[47]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[27], x[6], x[13], x[20], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[34], x[41], x[48]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[28], x[7], x[14], x[21], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[35], x[42], x[49]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[29], x[1], x[8], x[15], x[22], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[36], x[43]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[30], x[2], x[9], x[16], x[23], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[37], x[44]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[31], x[3], x[10], x[17], x[24], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[38], x[45]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[32], x[4], x[11], x[18], x[25], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[39], x[46]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[33], x[5], x[12], x[19], x[26], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[40], x[47]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[34], x[6], x[13], x[20], x[27], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[41], x[48]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[35], x[7], x[14], x[21], x[28], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[42], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[36], x[1], x[8], x[15], x[22], x[29], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[43]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[37], x[2], x[9], x[16], x[23], x[30], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[44]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[38], x[3], x[10], x[17], x[24], x[31], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[45]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[39], x[4], x[11], x[18], x[25], x[32], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[46]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[40], x[5], x[12], x[19], x[26], x[33], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[47]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[41], x[6], x[13], x[20], x[27], x[34], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[48]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[42], x[7], x[14], x[21], x[28], x[35], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[43], x[1], x[8], x[15], x[22], x[29], x[36], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[44], x[2], x[9], x[16], x[23], x[30], x[37], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[45], x[3], x[10], x[17], x[24], x[31], x[38], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[46], x[4], x[11], x[18], x[25], x[32], x[39], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], 1);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[47], x[5], x[12], x[19], x[26], x[33], x[40], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[48], x[6], x[13], x[20], x[27], x[34], x[41], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], 0);
constraint int_lin_eq([-4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [d[49], x[7], x[14], x[21], x[28], x[35], x[42], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], 0);
constraint int_lin_le([1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1], [x[1], x[2], x[3], x[5], x[6], x[7], x[8], x[9], x[10], x[12], x[13], x[14], x[15], x[16], x[17], x[19], x[20], x[21], x[22], x[23], x[24], x[26], x[27], x[28], x[29], x[30], x[31], x[33], x[34], x[35], x[36], x[37], x[38], x[40], x[41], x[42], x[43], x[44], x[45], x[47], x[48], x[49]], 0);
constraint int_lin_le([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], 0);
solve :: int_search([x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[43], x[44], x[45], x[46], x[47], x[48], x[49]], most_constrained, indomain_min, complete) satisfy;