magicCSP::magicCSP(int n) { string variable; for(int i = 0; i < n ; i++) { for(int j = 0; j < n; j++) { string rows = convertToString(i); string colu = convertToString(j); variable = rows + "_" + colu; variables.push_back(variable); } } for(int i = 0; i < n*n; i++) { string num = convertToString(i+1); domain.push_back(num); } for (int i = 0; i < variables.size(); i++) addToDomain( variables[i] , domain); }
// "Timetravel" to before value was assigned and preserve the domain and storedDomain at that state void Square::preserveDomains(int _value) { std::vector<int> oldDomain = domain; std::vector<int> oldStoredDomain = storedDomain; if (domainsForPrevHost.size() > 0) { storedDomain = domainsForPrevHost[domainsForPrevHost.size() - 1]; domainsForPrevHost.clear(); } addToDomain(_value); domainsForPrevHost.push_back(domain); domainsForPrevHost.push_back(storedDomain); domain = oldDomain; storedDomain = oldStoredDomain; }
// Add the value back to domain and set value to zero void Square::resetValue() { addToDomain(value); value = 0; }