Search in sources :

Example 1 with RankCalculator

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";
}
Also used : Contest(com.zzkun.model.Contest) RankCalculator(com.zzkun.util.rank.RankCalculator) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 2 with RankCalculator

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;
}
Also used : RankCalculator(com.zzkun.util.rank.RankCalculator)

Aggregations

RankCalculator (com.zzkun.util.rank.RankCalculator)2 Contest (com.zzkun.model.Contest)1 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)1