Ejemplo n.º 1
0
  public boolean forwardCheck() {
    boolean result = true;

    if (!stackMachineChecked) {
      stackMachine = new StackMachine();
      stackMachine.setProblem(this);
      stackMachine.setValueNames(getValueNames());
      stackMachineChecked = true;
    }

    for (int i = lastSetValue + 1; i < values.size(); i++) {
      Value valueToCheck = values.get(i);

      int limitsSize = valueToCheck.getLimits().getLimits().size();

      for (int j = 0; j < limitsSize; j++) {
        valueToCheck.setLimit(j);
        if (!stackMachine.checkLimits(cspLimits)) {
          valueToCheck.blockLimit(j);
        }
      }

      if (!valueToCheck.hasFreeLimits()) {
        valueToCheck.clearValue();
        return false;
      }

      valueToCheck.clearWithoutLimits();
    }

    return result;
  }
Ejemplo n.º 2
0
  public boolean goOneLevelUp() {
    boolean result = true;

    if (lastSetValue > 0) {
      Value value = values.get(lastSetValue);
      value.clearValue();

      --lastSetValue;
    } else {
      result = false;
    }
    //		System.out.println("goOneLevelUp " + result);

    return result;
  }
Ejemplo n.º 3
0
 public void resetValues() {
   lastSetValue = 0;
   for (Value value : values) {
     value.clearValue();
   }
 }