61 lines
2.7 KiB
MiniZinc
61 lines
2.7 KiB
MiniZinc
predicate fzn_all_different_int(array [int] of var int: x);
|
|
predicate count(array [int] of var int: x, var int: y, var int: c);
|
|
predicate fixed_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, int: b);
|
|
predicate global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);
|
|
predicate maximum_int(var int: m, array [int] of var int: x);
|
|
predicate minimum_int(var int: m, array [int] of var int: x);
|
|
predicate sliding_sum(int: low, int: up, int: seq, array [int] of var int: vs);
|
|
predicate sort(array [int] of var int: x, array [int] of var int: y);
|
|
predicate table_bool(array [int] of var bool: x, array [int, int] of bool: t);
|
|
predicate table_int(array [int] of var int: x, array [int, int] of int: t);
|
|
predicate var_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, var int: b);
|
|
var 1..26: A;
|
|
var 1..26: B;
|
|
var 1..26: C;
|
|
var 1..26: D;
|
|
var 1..26: E;
|
|
var 1..26: F;
|
|
var 1..26: G;
|
|
var 1..26: H;
|
|
var 1..26: I;
|
|
var 1..26: J;
|
|
var 1..26: K;
|
|
var 1..26: L;
|
|
var 1..26: M;
|
|
var 1..26: N;
|
|
var 1..26: O;
|
|
var 1..26: P;
|
|
var 1..26: Q;
|
|
var 1..26: R;
|
|
var 1..26: S;
|
|
var 1..26: T;
|
|
var 1..26: U;
|
|
var 1..26: V;
|
|
var 1..26: W;
|
|
var 1..26: X;
|
|
var 1..26: Y;
|
|
var 1..26: Z;
|
|
array [1..26] of var 1..26: all_letters :: output_array([1..26]) = [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z];
|
|
constraint fzn_all_different_int(all_letters);
|
|
constraint int_lin_eq([1, 1, 2], [A, J, Z], 58);
|
|
constraint int_lin_eq([1, 1, 2], [B, E, O], 53);
|
|
constraint int_lin_eq([1, 2, 1], [L, O, S], 37);
|
|
constraint int_lin_eq([2, 1, 1], [E, G, L], 66);
|
|
constraint int_lin_eq([1, 1, 1, 1], [E, L, R, Y], 47);
|
|
constraint int_lin_eq([1, 1, 1, 1], [G, N, O, S], 61);
|
|
constraint int_lin_eq([1, 1, 1, 2], [E, F, G, U], 50);
|
|
constraint int_lin_eq([1, 1, 2, 1], [C, E, L, O], 43);
|
|
constraint int_lin_eq([2, 1, 1, 1], [E, H, M, T], 72);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1], [A, C, E, L, S], 51);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1], [A, E, O, P, R], 65);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1], [A, K, L, O, P], 59);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1], [A, L, T, W, Z], 34);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1], [E, F, L, T, U], 30);
|
|
constraint int_lin_eq([1, 1, 1, 2, 1], [A, B, E, L, T], 45);
|
|
constraint int_lin_eq([2, 1, 1, 1, 1], [I, L, N, O, V], 100);
|
|
constraint int_lin_eq([1, 1, 1, 1, 2, 1], [A, E, Q, R, T, U], 50);
|
|
constraint int_lin_eq([1, 1, 2, 1, 1, 1], [A, N, O, P, R, S], 82);
|
|
constraint int_lin_eq([2, 1, 1, 1, 1, 1], [C, E, N, O, R, T], 74);
|
|
constraint int_lin_eq([1, 1, 1, 1, 2, 1, 1, 1], [A, E, H, N, O, P, S, X], 134);
|
|
solve :: int_search(all_letters, first_fail, indomain_median, complete) satisfy;
|