import static choco.Choco.*; import choco.cp.model.CPModel; import choco.cp.solver.CPSolver; import choco.cp.solver.search.integer.varselector.StaticVarOrder; import choco.cp.solver.search.integer.varselector.MinDomain; import choco.kernel.model.Model; import choco.kernel.solver.Solver; import choco.kernel.model.variables.integer.IntegerVariable; import choco.kernel.solver.variables.integer.IntDomainVar; public class SteinerTriple05 { public static void main(String[] args) { CPModel model = new CPModel(); int v = Integer.parseInt(args[0]); // # points int b = v*(v-1)/6; // # blocks IntegerVariable[][] A = new IntegerVariable[v][v]; // // A[i][j] = k <-> the pair of points (i,j) is in block k // where there v points, b blocks, each block is of size 3 // NOTE: this forces each pair of points to occur once and once only! // for (int i=0;i block i contains point j // IntegerVariable[][] transBlock = new IntegerVariable[v][b]; // // transpose of block // for (int i=0;i block[k][i] && block[k][j] // i.e. pair (i,j) \in block k iff block[k][i] is true and block[k][j] is true // */ for (int i=0;i