public override void Post() { switch (Level) { case PropagateLevel.Normal: { m_Update = new AllDifferentArrayX(this); foreach (Variable var in VarList) { var.OnVarIsBoundList.Add(this); } } break; case PropagateLevel.High: { m_Update = new AllDifferentByCountX(this); foreach (Variable var in VarList) { var.OnVarDomainList.Add(this); } } break; } }
public override void Update() { if (AllDifferentArrayX.Update(m_Constraint.IntVarList)) { m_Constraint.Violate(); return; } UpdateOnDomain(m_Constraint.IntVarList); if (UpdateOnCount(m_Constraint.IntVarList)) { m_Constraint.Violate(); return; } }