// // How many solutions are there to the equation // x + y + z = 29 where x,y,z in [0..29] // // Prove result is correct. // import static choco.Choco.*; import choco.cp.model.CPModel; import choco.cp.solver.CPSolver; import choco.kernel.model.Model; import choco.kernel.solver.Solver; import choco.kernel.solver.ContradictionException; import choco.kernel.model.variables.integer.IntegerExpressionVariable; import choco.kernel.model.variables.integer.IntegerVariable; import choco.cp.solver.search.integer.varselector.StaticVarOrder; public class MakeJob { static void display(int x, int y, int z){ System.out.print("java Ramsey334_30b "+ x +" "+ y +" "+ z +" > results/"); if (x<10) System.out.print("0"+ x +"-"); else System.out.print(x +"-"); if (y<10) System.out.print("0"+ y +"-"); else System.out.print(y +"-"); if (z<10) System.out.println("0"+ z +".txt"); else System.out.println(z +".txt"); } public static void main(String[] args) { Model m = new CPModel(); int n = 29; int lwb = Integer.parseInt(args[0]); int upb = Integer.parseInt(args[1]); IntegerVariable[] vars = makeIntVarArray("",3,0,n); int k = 0; m.addConstraint(eq(sum(vars),29)); m.addConstraint(leq(vars[0],vars[1])); Solver solver = new CPSolver(); solver.read(m); //s.solve(true); solver.setVarIntSelector(new StaticVarOrder(solver.getVar(vars))); if (solver.solve().booleanValue()){ if (lwb <= k && k <= upb) display(solver.getVar(vars[0]).getVal(),solver.getVar(vars[1]).getVal(),solver.getVar(vars[2]).getVal()); k++; while (solver.nextSolution().booleanValue()){ if (lwb <= k && k <= upb) display(solver.getVar(vars[0]).getVal(),solver.getVar(vars[1]).getVal(),solver.getVar(vars[2]).getVal()); k++; } } //System.out.println("feasible: " + solver.isFeasible()); //System.out.println("nbSol: " + solver.getNbSolutions()); } }