Website | Source

Examples

N-Queens

include "all_different.mzn";

int: n = 8;
array [1..n] of var 1..n: q; % queen in column i is in row q[i]

constraint all_different(q);                      % distinct rows
constraint all_different([q[i] + i | i in 1..n]); % distinct diagonals
constraint all_different([q[i] - i | i in 1..n]); % upwards+downwards

include "visualise.mzn";

Sudoku

include "globals.mzn";

any: board = [|
   5,  3, <>,  <>,  7, <>,  <>, <>, <> |
   6, <>, <>,   1,  9,  5,  <>, <>, <> |
  <>,  9,  8,  <>, <>, <>,  <>,  6, <> |
 
   8, <>, <>,  <>,  6, <>,  <>, <>,  3 |
   4, <>, <>,   8, <>,  3,  <>, <>,  1 |
   7, <>, <>,  <>,  2, <>,  <>, <>,  6 |

  <>,  6, <>,  <>, <>, <>,   2,  8, <> |
  <>, <>, <>,   4,  1,  9,  <>, <>,  5 |
  <>, <>, <>,  <>,  8, <>,  <>,  7,  9
|];

array [1..9, 1..9] of var 1..9: solution;

% Given numbers are fixed
constraint forall (i, j in 1..9) (solution[i, j] ~= board[i, j]);

% Rows are all different
constraint forall (i in 1..9) (all_different(solution[i, ..]));
% Columns are all different
constraint forall (j in 1..9) (all_different(solution[.., j]));

% Subgrids are all different
constraint forall (i, j in 1..3) (
  all_different(solution[
    3 * (i - 1) + 1 .. 3 * i,
    3 * (j - 1) + 1 .. 3 * j
  ])
);

include "visualise.mzn";


Tags: language   logic  

Last modified 15 September 2025