abstract sclass AI_RandomWithVariation_abstract extends AI { AI_Random_abstract baseAI; int n; new Best best; *() {} *(AI_Random_abstract *baseAI) {} void go { if (round() == 1 && best.has()) // resubmit our best from last round submit(best!); else { Submission guess = guess(); updateBest(guess, submit(guess)); } } Submission guess() { if (odd(n++) && best.has()) ret vary(best!); else ret baseAI.guess(); } void updateBest(Submission guess, double score) { best.put(guess, score); } abstract Submission vary(Submission s); }