1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
Jip J. Dekker fad1b07018 Squashed 'software/minizinc/' content from commit 4f10c8205
git-subtree-dir: software/minizinc
git-subtree-split: 4f10c82056ffcb1041d7ffef29d77a7eef92cf76
2021-06-16 14:06:46 +10:00

16 lines
660 B
MiniZinc

int: n; % number of people
set of int: PERSON = 1..n; % set of people
enum GENDER = { M, F, O }; % set of genders
array[PERSON] of GENDER: g; % the gender of each person
set of int: POSN = 1..n; % set of positions
array[PERSON] of var POSN: pos; % decisions: a position for each person
array[POSN] of var PERSON: who; % view: a person for each position
include "inverse.mzn";
constraint inverse(pos,who); % channel from decisions to view
constraint forall(i in 1..n-2)
(g[who[i]] != g[who[i+1]] \/ g[who[i+1]] != g[who[i+2]]);
solve minimize sum(i in 1..n-1)(abs(pos[i] - pos[i+1]));