I hope somebody read this and answer something about it.
A ranking score system must be the most simplest as possible in order to get its mission.
In this case the target is to have a ordered list with the french coders (who started first) on top of it. Then french companies can choose them to offer a job.
Score based on ELO ratings or time are not neccesary.
The above sentences answer all the complex formulas posted by enygma, pk_fr and DorianWilde.
Enygma you have posted several times that you can not compete fairly if you didnât previous challenges. Well, I solved this problem several days ago but it seems you didnât read it.
I would like to know WHY this solution is worse than the actual one:
Ranking score for each contest = Max of all scores got in each contest
The more contest you play, the more odds you have to make your max higher.
The score is calculated using a progresive formula in order to give different points to different positions in each contest.
Score = P + N ^ (P / N)
Where P = (N - C + 1), N = Number of participants, C = Position
This is the simplest solution to know the very best coders playing at codingame, and if you donât think so, tell me why.
By contest you mean âtype of contestâ (type 1 = solo, type 2 = multi) I guess?
Then if you give max score, anyone who scored 1st can just stop playing and remain first⊠not fun, not competitive since you donât need to participate anymore.
But sure that would still be a lot more fair than the current and previous ranking. Though you also have to give points for solo puzzles and for multiplayers permanent contests.
Also I donât like the formulation based on a power since there is no valid reason to have a non linear points spreads between players based on only one critera : the position. I already explained why itâs unfair.
On a side note I totally agree that ELO is not adapted at all for this kind of rankings. ELO is adapted to 1 on 1 battles, not to simultaneous mass battle.
A = Points from games solved. ( See my post on this thread for explanation )
B = Maximum points got in all SOLO contest played
C = Maximum points got in all MULTI contest played
D = Maximum points got in all TRAINING contest played
Sorry for not including before, I thought you had read it on this post.
Of course you need to participate on more contest because max score is different on each contest.
Solo contest is a race against time. The position is the one criteria for getting points in a race. Formula 1 score system has a non linear points spread. Here formula is a bit more complex because of the big amount of racers/coders.
If each contest has different points => you can get situations where past contest awarded 2000 points while future ones award 1200 average for example meaning you canât catch up => unfair. The max points for your B and C should be fixed while max points for D should be also fixed but by challenge (such as A). Whatever the number of contenders the reward should be the same (imagine that olympic games give different size of gold, silver and bronze medals depending on the year⊠=> non sense).
Solo contest may be a race against time but position doesnât tell you the time and canât be the only critera taken into account to justify a points spread difference. Also, you might need to include a performance critera to compare and calculate code length⊠and the fact that the code is clean or not. ⊠etc. Too complex. Linear is the fair way to go unless other criters count too.
It is not unfair. Imagine the opposite situation. You win a contest against 2000 contenders and get your max score. Is unfair that someone get more points than you only playing more and more contest with no wins against 1000 or less contenders. It is more difficult to win a contest against too many contenders and this is what matter on a ranking system.
In this manner you can know easily how good the coder is no matter the number of contest he played.
Of course there are more calculations that we can take in account to make more fair the ranking system but not in a simpler way. And you will agree with me that using max instead sum is more fair because we donât want to know who coders have played more but who coders have the best position against others.
Not at all, it is fair by all means. No matter the number of opponents, at one point, there was a champion, a gold medalist. Whatever. Letâs say he had only 10 opponents who were damn strong. But todayâs champion had 10000 opponents⊠strangely those were all pretty weak. Does that make the new champion stronger than the previous one? Of course not. Stating otherwise would be very partial. The number of opponents is not an impartial indicator of performance.
Of course max versus sum is better⊠but it is still unfair. With a fixed amount of points itâs far better. Letâs break it down :
You see that the champion gets 100 each time, but the 2nd get more points if there are more opponents than if there are less. So with a MAX system as you thought, itâs interesting to try again to maybe raise your max whatever the number of participants.
Though some might say itâs unfair that contest 1 and 2 donât award points the same way. They are not really wrong. Maybe a fixed reward would be better such as (example for a 1000 points contest type) :
I donât like using fixed amount of points for the winner, because normally it is more difficult to win a contest with more contenders than one with less.
The strange case with 10000 weak opponents can be solved adding to the formula the ranking of each opponent defeated by everyone. But I think this will make the formula more complex and less intuitive and only it will be useful for a few cases.
Isnât fixed amount of points for the winner the only way to to make fair so that any new player can still target the same max points as the previous contenders were in the past contests?
A = Points from puzzle games solved
B = Maximum points got in all SOLO contest played
C = Maximum points got in all MULTI contest played
D = Total points got in all TRAINING contest played
I think this is more fair because all TRAINING contest can be played in any time.
Why should there be only one leaderboard ? instead of trying to make this one right, i would start with another approach.
Maybe creating two distincts leaderboard : One with points ( earned through achievements + your rank in points at each multi training ) - And the other only with ranks.
The one with ranks would represent the âall contests leaderboardâ with a different ranking rules than the one with points :
For example if B has won over A more times than A has won over B : B should have a better rank than A
Of course it should take in account how many contests the player have done and other stuff but iâm only throwing an idea
This way if someone is really good but donât have time to do contests he would still have a good rank in the points leaderboard, and if someone is only interested in contests he wonât be beaten by some who are only playing outside contests
The problem will still be the same in contests. If past contest earn points you canât gain afterwards, the ranking is useless since itâll be a grind ranking, not a skill ranking.
Anyway, this kind of rules canât work because of circular case: if A won over B, B won over C and C won over A, who should be first? This is even more critical with thousands of players.
I would say itâs a tie, each of them has 1 victory and one lose. But i see your point .
My idea was to separate the two because i feel like it should but i didnât though deeply about how the rules would work.
I feel like we focus too much on doing a pool of points with everything and balancing how they are given while we could make things simpler by dividing leaderboard and applying different set of rules, which rules, this i another debate ^^
Not sure if this has been suggested before, but how about multiple ranking systems? One for puzzles and one for contests. I think the contest one should use TrueSkill, while the puzzle one can be just a sum of points. I suspect most good coders will only care about the contest ranking. In contest rankings it shouldnât be too hard for new comers to catch up to the top (perhaps 2-3 good results).
As weâre also talking about several leaderboards and such, what about showing in the global leaderboard the most used language during contests (or 2 most or even all but it may be a long list for some) and giving the ability to filter by these languages?
I didnât think long about this so it may be a useless/meaningless idea but I just noticed that though there are often a lot of C/C++ or Java coders in contests top, the global top 10 seems to be mostly crowded with PHP and Python coders and I donât know if it means these people are simply more diligent or actually have more constant results.