class Solve::Solver
def possible_values_for(variable)
def possible_values_for(variable) possible_values_for_variable = possible_values[variable.artifact] if possible_values_for_variable.nil? constraints_for_variable = constraint_table.constraints_on_artifact(variable.artifact) all_values_for_variable = domain[variable.artifact] possible_values_for_variable = constraints_for_variable.inject(all_values_for_variable) do |remaining_values, constraint| remaining_values.reject { |value| !constraint.satisfies?(value.version) } end possible_values[variable.artifact] = possible_values_for_variable end possible_values_for_variable end