abstract sclass AIStrategy implements Steppable { // user must set F1 submit; // scoring function *() {} *(F1 *submit) {} selfType setJudge(IF1 judge) { submit = toF1(judge); this; } long round; new Best best; bool verbose; event newBest(A guess, double score); void updateBest(A guess, double score) { if (best.put(guess, score)) newBest(); } double submit(A guess) { if (guess == null) ret minusInfinity(); double score = callF(submit, guess); updateBest(guess, score); ret score; } }