package CSP; /** * Title: CSP_Variable * Description: Define subclass to represent a specific kind of CSP variable. * Copyright: Copyright (c) 2005 * Company: MIT * @author Andreas Hofmann * @version 1.0 */ import java.util.*; public class CSP_Variable { CSP_Domain domain = null; List from_arcs = new ArrayList(); List to_arcs = new ArrayList(); public CSP_Variable() { } public CSP_Domain get_domain() { return domain; } public List get_domain_values() { return domain.domain_values; } public void assign(Object domain_value) { List values = new ArrayList(); values.add(domain_value); domain.domain_values = values; // Replaces old domain } public void restore_domain(List values) { domain.domain_values = values; // Replaces old domain } public boolean consistent() { // Iterate over to_arcs, checking if consistent. ListIterator to_arc_iterator = to_arcs.listIterator(); while (to_arc_iterator.hasNext()) { CSP_Constraint to_arc = (CSP_Constraint)to_arc_iterator.next(); if (!(to_arc.consistent())) return false; } // Iterate over from_arcs, checking if consistent. ListIterator from_arc_iterator = from_arcs.listIterator(); while (from_arc_iterator.hasNext()) { CSP_Constraint from_arc = (CSP_Constraint)from_arc_iterator.next(); if (!(from_arc.consistent())) return false; } return true; } }