Modification of ranking score

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.

1 Like

Ranking score = A + B + C + D

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.

Thank you for your reply

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 :

Contest max points = 100
Contest 1 : 5 successfull contenders (A, B, C, D, E) : who got : 100, 75, 50, 25, 1
Contest 2 : 26 successfull contenders (A, B, 
, Z) who got 100, 96, 92, 
, 1

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) :

1st : 1000 points
2nd : 900 points
3rd : 800 points
4th-10th : 700 points
11th-25th : 600 points
26th-50th : 500 points
51th-100th : 400 points
101th-250th : 300 points
251th-500th : 200 points
501th+ : 100 points (remaining sucessfull contenders)
Unsuccessfull contenders : 1 point

I think that would be fine too.

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?

I think so.

Yes, it is, but we don’t need to make any new player can target the same max points as the previous contenders. That is not the point.

The most fair system is to give as many points as coders’ ranking score you defeated on the same contest.

Example:

Leaderboard:
1Âș A
2Âș B
3Âș C
4Âș D
5Âș E
6Âș F

Contest results: (only 4 participants)
1Âș D, 2Âș F, 3Âș G 4Âș A

A player will get N+2-R points for each player below him, where N = number of players on the leaderboard and R = position on the leaderboard.

In this simple case,
player D will get: 2 + 1 + 7 = 10 points
player F will get: 1 + 7 = 8 points
player G will get: 7 points

i think they the score should be maintained according to the number of the plays

Ranking score = A + B + C + D

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.

I think that make too much emphasys on achievements points, and that make a lot of people higher even whithout doing even one challenge !

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

1 Like

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.

Its idea isn’t point-based


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.

1 Like

That’s a nice idea, perhaps have stats like the following for each contest:

sorry, i was asking a question here - i have found an answer already

leaderboard is counting points from optimization puzzles - that is all