/*
* @(#)SetBuilderExercise.java 0.0.0 99/08/04
*
* Copyright (c) 1999 by Willie Wheeler. All rights reserved.
*/
package stats.exercises;
import java.io.*;
import java.util.*;
import exercise.*;
import stats.*;
/**
* Specification for a SetBuilder exercise. The student must use
* the SetBuilder to build a data set satisfying instance-specific
* constraints.
*
* @version 0.0.0 08/04/99
* @author Willie Wheeler
*/
public class SetBuilderExercise implements Exercise {
protected VariablesVector variables;
protected Vector atoms;
protected Vector constraints;
public SetBuilderExercise(Vector variables, Vector atoms) {
this.variables = new VariablesVector(variables);
this.atoms = atoms;
}
public Vector getVariables() { return variables; }
public Vector getAtoms() { return atoms; }
public void setConstraints(Vector constraints) {
this.constraints = constraints;
}
public Vector getConstraints() { return constraints; }
/**
* Specifies a constraint on the data set. Each constraint maps a
* (state, conditioning state) pair to a target ratio in the range 0.0 -
* 1.0.
*/
public class Constraint implements Serializable {
protected int[] state;
protected int[] conditioningState;
protected double target;
public Constraint(int[] state, double target) {
this(state, null, target);
}
public Constraint(int[] state,
int[] conditioningState,
double target) {
this.state = state;
this.conditioningState = conditioningState;
this.target = target;
}
public int[] getState() { return state; }
public int[] getConditioningState() { return conditioningState; }
public double getTarget() { return target; }
public String toString() {
// Get the state and conditioning states as strings.
String stateString =
variables.getStateAsString(state, true, " & ");
String condString =
variables.getStateAsString(conditioningState, true, " & ");
// Build the string representation of the constraint.
StringBuffer buffer = new StringBuffer("fr(" + stateString);
if (! condString.equals("")) { buffer.append(" | " + condString); }
buffer.append(") = " + target);
// And finally return it.
return buffer.toString();
}
}
}