// all it needs is a text! sclass Sucker { new HighestShortest highest; /*new*/ ShortestPercentiles percentiles; S text; double lastScore; bool changed; int pivotLength; *() {} *(S *text) {} // returns true when updated result synchronized bool suck(S desc, Algorithm algorithm) { print("Best score: " + highest.score); double score = scoreAlgorithm(algorithm, desc); lastScore = score; bool change = false; if (highest.update(desc, score)) change = true; if (percentiles != null && percentiles.update(desc, score)) change = true; if (change) changed = true; ret change; } S highestDesc() { ret highest.a; } double highestScore() { ret highest.score; } double scoreAlgorithm(Algorithm algorithm, S desc) { ret scoreTextPredictAlgo(algorithm, getText(), l(desc), pivotLength); } bool testLua(S luaCode) { ret suck("L " + luaCode, makeLuaTextPredictAlgo("L " + luaCode)); } S getText() { ret text; } void reset() { highest = new HighestShortest; } }