/*
* Created on Mar 3, 2006
*/
package org.seqcode.gseutils;
import java.util.*;
/**
* @author tdanford
*/
public interface RecurrenceEquation {
public double getValue(Arguments a);
public static class Arguments {
private int[] values;
public Arguments(Collection<Integer> a) {
values = new int[a.size()];
int i = 0;
for(int v : a) {
values[i++] = v;
}
}
public Arguments(int[] a) {
values = (int[])a.clone();
}
public int size() { return values.length; }
public int getArgument(int i) { return values[i]; }
public int hashCode() {
int code = 17;
for(int i = 0; i < values.length; i++) {
code += values[i];
}
code *= 37;
return code;
}
public boolean equals(Object o) {
if(!(o instanceof Arguments)) { return false; }
Arguments a = (Arguments)o;
if(values.length != a.values.length) { return false; }
for(int i = 0; i < values.length; i++) {
if(values[i] != a.values[i]) { return false; }
}
return true;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{ ");
for(int i = 0; i < values.length; i++) {
sb.append(values[i] + " ");
}
sb.append("}");
return sb.toString();
}
}
}