using System; using System.Collections.Generic; using System.Text; namespace CLab.CSP { /// /// The first try of a structure representing binary constraints. Very space consuming structure, /// and thus should be improved. /// public class Binary { private int varID1; private int varID2; private Boolean[][] validDomains; public Binary(int varID1, int varID2, int c1Size) { this.varID1 = varID1; this.varID2 = varID2; validDomains = new Boolean[c1Size][]; } public int VarID1 { get { return varID1; } set { varID1 = value; } } public int VarID2 { get { return varID2; } set { varID2 = value; } } public Boolean[][] ValidDomains { get { return validDomains; } set { validDomains = value; } } public void makeC2Table(int valueC1, int sizeC2) { validDomains[valueC1] = new Boolean[sizeC2]; } public void addValidDomain(int valueC1, int valueC2) { validDomains[valueC1][valueC2] = true; } public Boolean validDomain(int valueC1, int valueC2) { try { if (validDomains[valueC1][valueC2] == true) return true; } catch (Exception) { } return false; } public void removeValidDomain(int valueC1, int valueC2) { validDomains[valueC1][valueC2] = false; } public override string ToString() { String retur = "\nConstraint between variables: " +varID1 +" and " +varID2 +"\n"; for (int i = 0; i < validDomains.Length; i++) { retur += "\n "; for (int j = 0; j < validDomains[i].Length; j++) { retur += validDomains[i][j] + "\t"; } } return retur; } } }