import static choco.Choco.*; import java.util.Scanner; import choco.cp.model.CPModel; import choco.cp.solver.CPSolver; import choco.kernel.model.Model; import choco.kernel.solver.Solver; import choco.kernel.model.variables.integer.IntegerVariable; import choco.kernel.solver.ContradictionException; import choco.kernel.solver.variables.integer.IntDomainVar; public class XTest { private static Solver s; private static Scanner sc; public static void main(String[] args) throws ContradictionException { String commands = "\nSetting and Unsetting variables\n" + "set (s), remove (r), undo (u), quit (q), help"; /* model and constraints */ Model model = new CPModel(); int n = 8; IntegerVariable[] V = makeIntVarArray("V",n,0,99); int value[] = new int[n]; for (int i=0; i "); String command = sc.next(); while (!command.equals("quit") && !command.equals("q")){ if (command.equals("set") || command.equals("s")) set(v,value); if (command.equals("remove") || command.equals("r")) remove(v,value); if (command.equals("undo") || command.equals("u")) undo(v,value); if (command.equals("help")) System.out.println(commands); System.out.println(); for (int i=0;i "); command = sc.next(); } } private static void set(IntDomainVar[] v,int[] value) throws ContradictionException { System.out.print("var index > "); int index = sc.nextInt(); System.out.print("value > "); int val = sc.nextInt(); value[index] = val; s.worldPop(); s.worldPush(); for (int i=0;i 0) v[i].setVal(value[i]); s.propagate(); } private static void remove(IntDomainVar[] v,int[] value) throws ContradictionException { System.out.print("var index > "); int index = sc.nextInt(); value[index] = -1; s.worldPop(); s.worldPush(); for (int i=0;i 0) v[i].setVal(value[i]); s.propagate(); } private static void undo(IntDomainVar[] v,int[] value) throws ContradictionException { for (int i=0;i 0) v[i].setVal(value[i]); s.propagate(); } }