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.

26 lines
674 B
MiniZinc

int: n;
enum Men = anon_enum(n);
enum Women = anon_enum(n);
array[Women, Men] of int: rankWomen;
array[Men, Women] of int: rankMen;
array[Men] of var Women: wife;
array[Women] of var Men: husband;
% assignment
constraint forall (m in Men) (husband[wife[m]]=m);
constraint forall (w in Women) (wife[husband[w]]=w);
% ranking
constraint forall (m in Men, o in Women) (
rankMen[m,o] < rankMen[m,wife[m]] ->
rankWomen[o,husband[o]] < rankWomen[o,m] );
constraint forall (w in Women, o in Men) (
rankWomen[w,o] < rankWomen[w,husband[w]] ->
rankMen[o,wife[o]] < rankMen[o,w] );
solve satisfy;
output ["wives= \(wife)\nhusbands= \(husband)\n"];