static void runStrategyWhileImprovement(Best best, Steppable strategy, O... _) { double score = best.score(); int plateauLength = 1000; long sameScoreSince = 0; while licensed { if (strategy.step()) ret; ++sameScoreSince; if (best.score() != score) { print("Improvement after " + n2(sameScoreSince, "round") + ": " + callStringifier(optParam(_, 'printer), best)); sameScoreSince = 0; score = best.score(); } else if (sameScoreSince >= plateauLength) ret; } } static Best runStrategyWhileImprovement(Steppable strategy, O... _) { runStrategyWhileImprovement(strategy.best, strategy, _); ret best; }