perf: change sorting rule of RecruitCombs operator list

This commit is contained in:
Horror Proton
2022-08-02 21:59:24 +08:00
parent ab277d08e6
commit 2da185f169
2 changed files with 9 additions and 8 deletions

View File

@@ -8,6 +8,9 @@
#include "RecruitConfiger.h"
#include "Logger.hpp"
#include <algorithm>
#include <ranges>
namespace asst::recruit_calc
{
// all combinations and their operator list, excluding empty set and 6-star operators while there is no senior tag
@@ -297,11 +300,9 @@ asst::AutoRecruitTask::calc_task_result_type asst::AutoRecruitTask::recruit_calc
// assuming timer would be set to 09:00:00
for (RecruitCombs& rc : result_vec) {
if (rc.min_level < 3) {
// find another min level backwards (assuming operator list reversely sorted by level)
auto sec = std::find_if(
rc.opers.crbegin(), rc.opers.crend(),
[](const RecruitOperInfo& op) -> bool { return op.level >= 3; });
if (sec != rc.opers.crend()) { rc.min_level = sec->level; }
// find another min level (assuming operator list sorted in increment order by level)
auto sec = std::ranges::find_if(rc.opers, [](const RecruitOperInfo& op) { return op.level >= 3; });
if (sec != rc.opers.cend()) { rc.min_level = sec->level; }
}
}
@@ -351,7 +352,7 @@ asst::AutoRecruitTask::calc_task_result_type asst::AutoRecruitTask::recruit_calc
comb_json["tags"] = json::array(std::move(tags_json_vector));
std::vector<json::value> opers_json_vector;
for (const RecruitOperInfo& oper_info : comb.opers) {
for (const RecruitOperInfo& oper_info : std::ranges::reverse_view(comb.opers)) { // print reversely
json::value oper_json;
oper_json["name"] = oper_info.name;
oper_json["level"] = oper_info.level;