use of com.zzkun.util.rank.RankCalculator in project ACManager by kun368.
the class ContestController method showScore.
@RequestMapping("/showScore/{id}")
public String showScore(@PathVariable Integer id, @RequestParam(required = false, defaultValue = "0") Integer calcType, Model model) {
Contest contest = trainingService.getContest(id);
RankCalculator calculator = new RankCalculator(contest, calcType);
model.addAttribute("contest", contest);
model.addAttribute("ranks", contest.getRanks());
model.addAttribute("sum", calculator.getTeamScore());
model.addAttribute("pre", calculator.getPreTScore());
model.addAttribute("myrank", calculator.getTeamRank());
return "ranklist_score";
}
use of com.zzkun.util.rank.RankCalculator in project ACManager by kun368.
the class RatingService method generateRanks.
private List<Team> generateRanks(Contest contest) {
// /计算分数和名次
RankCalculator calculator = new RankCalculator(contest, 0);
double[] score = calculator.getTeamScore();
int[] rank = calculator.getTeamRank();
List<Team> teamList = new ArrayList<>();
for (int i = 0; i < contest.getRanks().size(); i++) {
TeamRanking teamRanking = contest.getRanks().get(i);
// /去掉队员数量大于7的队伍,防止TrueSkill算出NaN
if (teamRanking.getMember().size() >= 7)
continue;
teamList.add(new Team(teamRanking, rank[i], score[i]));
}
// /根据分数和Rank排序,解决TrueSkill同名次算分问题
Collections.sort(teamList);
return teamList;
}
Aggregations