sclass Scorer { double score, total; void addZeroToOne(double score) { ++total; this.score += clamp(score, 0, 1); } void addZeroToOneError(double error) { addZeroToOne(1-error); } void addError { add(false); } void addOK { add(true); } bool add(bool correct) { ++total; if (correct) ++score; ret correct; } void print() { main.print(toString()); } toString { ret formatDouble(ratioToPercent(score, total), 1) + "% correct (n=" + total + ")"; } double get() { ret ratioToPercent(score, total); } double percentScore() { ret get(); } }