From 1cc9da7a79c421f11a4b13359f6a6c1abfcd061a Mon Sep 17 00:00:00 2001 From: Julien Lavergne Date: Sat, 3 Sep 2016 05:53:46 +0800 Subject: [PATCH] Put a limit (12) to the number of Eevee that can be kept when player is missing one evolution (#5104) --- .../cell_workers/pokemon_optimizer.py | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/pokemongo_bot/cell_workers/pokemon_optimizer.py b/pokemongo_bot/cell_workers/pokemon_optimizer.py index 7e242752d3..01ffa545be 100644 --- a/pokemongo_bot/cell_workers/pokemon_optimizer.py +++ b/pokemongo_bot/cell_workers/pokemon_optimizer.py @@ -278,37 +278,31 @@ def get_multi_best_pokemon_for_rule(self, family_list, rule, nb_branch): try_evolve_all += try_evolve try_upgrade_all += try_upgrade keep_all += keep - elif len(senior_pids) < nb_branch: - # We did not get every combination yet = All other Pokemon are potentially good to keep + else: for _, pokemon_list in self.group_by_pokemon_id(senior_pokemon_list): try_evolve, try_upgrade, keep = self.get_best_pokemon_for_rule(pokemon_list, rule) try_evolve_all += try_evolve try_upgrade_all += try_upgrade keep_all += keep - try_evolve, try_upgrade, keep = self.get_better_pokemon_for_rule(other_family_list, rule, other_family_list[-1]) + if len(senior_pids) < nb_branch: + # We did not get every combination yet = All other Pokemon are potentially good to keep + worst = other_family_list[-1] + else: + best = try_evolve_all + try_upgrade_all + keep_all + worst = self.sort_pokemon_list(best, rule)[-1] + + try_evolve, try_upgrade, keep = self.get_better_pokemon_for_rule(other_family_list, rule, worst, 12) try_evolve_all += try_evolve try_upgrade_all += try_upgrade keep_all += keep - else: - best = [] - - for _, pokemon_list in self.group_by_pokemon_id(senior_pokemon_list): - try_evolve, try_upgrade, keep = self.get_best_pokemon_for_rule(pokemon_list, rule) - best += try_evolve - best += try_upgrade - best += keep - - worst = self.sort_pokemon_list(best, rule)[-1] - - try_evolve_all, try_upgrade_all, keep_all = self.get_better_pokemon_for_rule(sorted_family, rule, worst) return try_evolve_all, try_upgrade_all, keep_all - def get_better_pokemon_for_rule(self, pokemon_list, rule, worst): + def get_better_pokemon_for_rule(self, pokemon_list, rule, worst, limit=1000): min_score = self.get_score(worst, rule)[0] scored_list = [(p, self.get_score(p, rule)) for p in pokemon_list] - best = [x for x in scored_list if x[1][0] >= min_score] + best = [x for x in scored_list if x[1][0] >= min_score][:limit] try_evolve = [x[0] for x in best if x[1][1] is True] try_upgrade = [x[0] for x in best if x[1][1] is False and x[1][2] is True] keep = [x[0] for x in best]