col_sum_puzzle.fzn 1.07 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
array [1..16] of int: clues = [5, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 8, 0, 7, 0, 0];
array [1..4] of int: colsums = [24, 18, 31, 31];
array [1..2] of int: diagsums = [24, 24];
array [1..4] of int: rowsums = [22, 26, 31, 25];
array [1..16] of var 1..9: x :: output_array([1..4, 1..4]);
constraint int_eq(5, x[1]);
constraint int_eq(7, x[14]);
constraint int_eq(8, x[7]);
constraint int_eq(8, x[12]);
constraint int_lin_eq([1, 1, 1, 1], [x[1], x[2], x[3], x[4]], 22);
constraint int_lin_eq([1, 1, 1, 1], [x[1], x[5], x[9], x[13]], 24);
constraint int_lin_eq([1, 1, 1, 1], [x[1], x[6], x[11], x[16]], 24);
constraint int_lin_eq([1, 1, 1, 1], [x[2], x[6], x[10], x[14]], 18);
constraint int_lin_eq([1, 1, 1, 1], [x[3], x[7], x[11], x[15]], 31);
constraint int_lin_eq([1, 1, 1, 1], [x[4], x[7], x[10], x[13]], 24);
constraint int_lin_eq([1, 1, 1, 1], [x[4], x[8], x[12], x[16]], 31);
constraint int_lin_eq([1, 1, 1, 1], [x[5], x[6], x[7], x[8]], 26);
constraint int_lin_eq([1, 1, 1, 1], [x[9], x[10], x[11], x[12]], 31);
constraint int_lin_eq([1, 1, 1, 1], [x[13], x[14], x[15], x[16]], 25);
solve satisfy;