Files
ortools-clone/examples/flatzinc/sudoku_alldifferent.fzn

99 lines
7.2 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..9: X____00001;
var 1..9: X____00002;
var 1..9: X____00003;
var 1..9: X____00004;
var 1..9: X____00005;
var 1..9: X____00006;
var 1..9: X____00007;
var 1..9: X____00008;
var 1..9: X____00009;
var 1..9: X____00010;
var 1..9: X____00011;
var 1..9: X____00012;
var 1..9: X____00013;
var 1..9: X____00014;
var 1..9: X____00015;
var 1..9: X____00016;
var 1..9: X____00017;
var 1..9: X____00018;
var 1..9: X____00019;
var 1..9: X____00020;
var 1..9: X____00021;
var 1..9: X____00022;
var 1..9: X____00023;
var 1..9: X____00024;
var 1..9: X____00025;
var 1..9: X____00026;
var 1..9: X____00027;
var 1..9: X____00028;
var 1..9: X____00029;
var 1..9: X____00030;
var 1..9: X____00031;
var 1..9: X____00032;
var 1..9: X____00033;
var 1..9: X____00034;
var 1..9: X____00035;
var 1..9: X____00036;
var 1..9: X____00037;
var 1..9: X____00038;
var 1..9: X____00039;
var 1..9: X____00040;
var 1..9: X____00041;
var 1..9: X____00042;
var 1..9: X____00043;
var 1..9: X____00044;
var 1..9: X____00045;
var 1..9: X____00046;
var 1..9: X____00047;
var 1..9: X____00048;
var 1..9: X____00049;
var 1..9: X____00050;
var 1..9: X____00051;
var 1..9: X____00052;
var 1..9: X____00053;
var 1..9: X____00054;
var 1..9: X____00055;
var 1..9: X____00056;
var 1..9: X____00057;
var 1..9: X____00058;
array [1..81] of var 1..9: x :: output_array([1..9, 1..9]) = [X____00001, X____00002, X____00003, 2, X____00004, 5, X____00005, X____00006, X____00007, X____00008, 9, X____00009, X____00010, X____00011, X____00012, 7, 3, X____00013, X____00014, X____00015, 2, X____00016, X____00017, 9, X____00018, 6, X____00019, 2, X____00020, X____00021, X____00022, X____00023, X____00024, 4, X____00025, 9, X____00026, X____00027, X____00028, X____00029, 7, X____00030, X____00031, X____00032, X____00033, 6, X____00034, 9, X____00035, X____00036, X____00037, X____00038, X____00039, 1, X____00040, 8, X____00041, 4, X____00042, X____00043, 1, X____00044, X____00045, X____00046, 6, 3, X____00047, X____00048, X____00049, X____00050, 8, X____00051, X____00052, X____00053, X____00054, 6, X____00055, 8, X____00056, X____00057, X____00058];
constraint fzn_all_different_int([1, X____00044, X____00045, X____00050, 8, X____00051, X____00056, X____00057, X____00058]) :: domain;
constraint fzn_all_different_int([2, X____00004, 5, X____00010, X____00011, X____00012, X____00016, X____00017, 9]) :: domain;
constraint fzn_all_different_int([2, X____00010, X____00016, X____00022, X____00029, X____00035, 4, X____00047, 6]) :: domain;
constraint fzn_all_different_int([2, X____00020, X____00021, X____00022, X____00023, X____00024, 4, X____00025, 9]) :: domain;
constraint fzn_all_different_int([2, X____00020, X____00021, X____00026, X____00027, X____00028, 6, X____00034, 9]) :: domain;
constraint fzn_all_different_int([4, X____00025, 9, X____00031, X____00032, X____00033, X____00038, X____00039, 1]) :: domain;
constraint fzn_all_different_int([4, X____00042, X____00043, X____00047, X____00048, X____00049, 6, X____00055, 8]) :: domain;
constraint fzn_all_different_int([5, X____00012, 9, X____00024, X____00030, X____00037, X____00043, X____00049, 8]) :: domain;
constraint fzn_all_different_int([6, X____00034, 9, X____00035, X____00036, X____00037, X____00038, X____00039, 1]) :: domain;
constraint fzn_all_different_int([X____00001, X____00002, X____00003, 2, X____00004, 5, X____00005, X____00006, X____00007]) :: domain;
constraint fzn_all_different_int([X____00001, X____00002, X____00003, X____00008, 9, X____00009, X____00014, X____00015, 2]) :: domain;
constraint fzn_all_different_int([X____00001, X____00008, X____00014, 2, X____00026, 6, X____00040, X____00046, X____00052]) :: domain;
constraint fzn_all_different_int([X____00002, 9, X____00015, X____00020, X____00027, X____00034, 8, 6, X____00053]) :: domain;
constraint fzn_all_different_int([X____00003, X____00009, 2, X____00021, X____00028, 9, X____00041, 3, X____00054]) :: domain;
constraint fzn_all_different_int([X____00004, X____00011, X____00017, X____00023, 7, X____00036, X____00042, X____00048, X____00055]) :: domain;
constraint fzn_all_different_int([X____00005, 7, X____00018, 4, X____00031, X____00038, 1, X____00050, X____00056]) :: domain;
constraint fzn_all_different_int([X____00005, X____00006, X____00007, 7, 3, X____00013, X____00018, 6, X____00019]) :: domain;
constraint fzn_all_different_int([X____00006, 3, 6, X____00025, X____00032, X____00039, X____00044, 8, X____00057]) :: domain;
constraint fzn_all_different_int([X____00007, X____00013, X____00019, 9, X____00033, 1, X____00045, X____00051, X____00058]) :: domain;
constraint fzn_all_different_int([X____00008, 9, X____00009, X____00010, X____00011, X____00012, 7, 3, X____00013]) :: domain;
constraint fzn_all_different_int([X____00014, X____00015, 2, X____00016, X____00017, 9, X____00018, 6, X____00019]) :: domain;
constraint fzn_all_different_int([X____00022, X____00023, X____00024, X____00029, 7, X____00030, X____00035, X____00036, X____00037]) :: domain;
constraint fzn_all_different_int([X____00026, X____00027, X____00028, X____00029, 7, X____00030, X____00031, X____00032, X____00033]) :: domain;
constraint fzn_all_different_int([X____00040, 8, X____00041, 4, X____00042, X____00043, 1, X____00044, X____00045]) :: domain;
constraint fzn_all_different_int([X____00040, 8, X____00041, X____00046, 6, 3, X____00052, X____00053, X____00054]) :: domain;
constraint fzn_all_different_int([X____00046, 6, 3, X____00047, X____00048, X____00049, X____00050, 8, X____00051]) :: domain;
constraint fzn_all_different_int([X____00052, X____00053, X____00054, 6, X____00055, 8, X____00056, X____00057, X____00058]) :: domain;
solve :: int_search([X____00001, X____00002, X____00003, 2, X____00004, 5, X____00005, X____00006, X____00007, X____00008, 9, X____00009, X____00010, X____00011, X____00012, 7, 3, X____00013, X____00014, X____00015, 2, X____00016, X____00017, 9, X____00018, 6, X____00019, 2, X____00020, X____00021, X____00022, X____00023, X____00024, 4, X____00025, 9, X____00026, X____00027, X____00028, X____00029, 7, X____00030, X____00031, X____00032, X____00033, 6, X____00034, 9, X____00035, X____00036, X____00037, X____00038, X____00039, 1, X____00040, 8, X____00041, 4, X____00042, X____00043, 1, X____00044, X____00045, X____00046, 6, 3, X____00047, X____00048, X____00049, X____00050, 8, X____00051, X____00052, X____00053, X____00054, 6, X____00055, 8, X____00056, X____00057, X____00058], first_fail, indomain_min, complete) satisfy;