Suggestion: leaderboard of Languages

Okay, we have leaderboard of players. There is even an external page which acts as a leaderboard of puzzles.
I suggest to also have a “leaderboard” of programming languages. Ranking could show for example:

  • total # of submitted bot code in puzzles / contests / solos for given language (overall popularity)
  • total # of bot code that achieved #1 ranking in a contest / multi for a given language (popularity among champions)
  • total # of bot code that achieved top 10 ranking in a contest / multi for a given language (language is fast/good enough to achieve well with it)

It does not mean that one is really better than the other, but CG usage data can be interesting.

We just think, that we human players compete and our weapons are our bots… In reality, the Language Creators who are competing - and their ‘bots’ are we, human players… :slight_smile:

2 Likes

Theoretically, it’s already possible to do this for multis since the leaderboard has language info (my bot does this for individual puzzles). For stats on all multis, however, you would need to get the leaderboard for every puzzle, which is kind of spammy.

I see there are some guys who have access to CG API and master the right skills and already created some very nice statistics pages in the past. (@dbdr, @_Royale, @Magus, @Azkellas comes to my mind plus who is behind https://chadok.info/codingame/ )

Let me suggest (ask for) another page, based on contest+multi leaderboard API.

  • selection dropdown: league (legend/gold/silver/all) - leads to refreshing the following table with data for that league only:
  • rows: name of contest or multi
  • columns: languages
  • data cell: percentage (# of the submissions in the given language / # submission - in that league

I think it is not a big problem if API is limited to top 1000 submissions.

I suspect the resulting table is a good sign of both language popularity but also on how much ‘heuristic-
friendly’ the given multi is.

To prevent spamming the API by each viewer, a ‘once-per-day’ query and local DB storage might be good, I suspect this is how for example https://chadok.info/codingame/leaderboard_xp.html works.
Finished contest actually do not change.

Why asking for it and not doing it? :slight_smile: Cause I am lacking the API definition. (I could manage the DB and web page part though not as nice one as for example https://dbdr.github.io/cg/ )

1 Like

In fact, every one have access to this. It’s not an “official” API, we just looked at the website ajax/websocket requests.

I quickly checked the html source of a multi leaderboard page, but no way I will be able to reverse engineer from these bunch of javascript files exactly what query is used to fetch the tabular data from the server (probably a HTTP GET but what?), and what format the data is is received (probably some JSON but what?), that is used to populate the initially empty DOM. :frowning: Maybe someone can help me out in a PM, please? … I promise not to flood this API.

CG Community is AWESOME. I got help in 5 mins.

I might make myself a small ‘language leaderboard’ page, with a local DB used to cache data. A nice challenge to improve my PHP. (Some areas I never used in PHP such as json handling).
Too bad, today is the last day of my holiday…

1 Like

Feel free to ask on the discord or the chat, you’ll probably always find some help.

I never checked the html source code of any codingame page. I just use my browser debug tools.

Then you miss the list of redirects to internal contests like the EA version of Tron, which you can find in the HTML directly.

1 Like

Oooh, nasty :smiley:

Here are some statistics on the language popularity and performance.
This is based on the “top-1000” leaderboards of 69 competitions (multis and past contests), retrieved today through API (over 55k leaderboard entries)

% distribution of the programming languages used - PER LEAGUE

As you can see, Python3 is the most popular in Wood and Bronze. Silver is fairly balanced among the top 4 languages (Python3, Java, C++ and C#). Not surprisingly, C++ takes over in the top two leagues where speed counts the most. 40% of all Legend bots is written in C++.
Notes: old Python 2 version is reported in separate line. League = none column shows the contests that don’t use the league system.

Medal table (total number of #1, #2 and #3 rankings achieved per language)

cg_stats_lang_medals

C++ dominance is even more dramatic at the very top level - 75% of wins was achieved by using C++.
Note: data included also for some contests where code speed did not count at all, e.g. Detective Pikaptcha.

6 Likes

And some PER COMPETITION statistics

% of submissions per language (LEGEND league only)

Note: some community puzzles with very low number of gamers are excluded. Languages below 1% are excluded.

Here the % ratio of C++ is hinting how much computation-heavy or heuristics-friendly the given puzzle is (we talk about Legend league!)
Ultimate Tic-Tac-Toe with 74% is clearly C++ territory, while for example in Ghost-in-the-Cell even a Python bot has decent chance to reach the top league.

5 Likes

I played a bit with the CG API to see what languages people are using to solve solo puzzles.
This is what I found:

Data is for solo puzzles, codegolf and optim, but excluding multis and contests.
Due to API limitations data is taking into account usage of Top1000 player of the global (CodinPoints) leaderboard. (If there are some users who did lots of solo puzzles but got not much CP from multis might be missing.)

@Stilgart’s 448 Haskell solutions are at or very near the theoretical maximum.
Overall runner-up is @dwarfie with 409 PHP solutions. (Go, PHP go! No, not you, ‘GO’)
75% of top1000 players solved at least 1 solo puzzle in C++, the highest percentage.
The top1000 players solved 18.5 puzzles in Python on the average.
You can get to the virtual podium easiest in D, solving only 20 puzzles would make you #1.
Overall, the top1000 players submitted ~85k solo puzzle solutions in any language.
@Marchete submitted the most solutions, average of 36.5 per language, or 985 in total. Runner-up is dwarfie with 896.
Only 61 players bothered to submit in all the 27 supported languages. The Top1000 players used 10 languages on the average.

In Achievements: @Magus has 271/271, runners-up are @AntiSquid (267), @Di_Masta (265).

Note: I could not get info on total unique puzzle solutions per player from the API. So people using multiple languages and not solving all the puzzles they solved in their primary language might be missing from above.

7 Likes

Yes, it would look very different without that limitation.

2 Likes

Very nice statistics, thanks for sharing :slight_smile:
Maybe this brings the question if solving a solo puzzle should grant CPs (I don’t know if it has been discussed before).

it used to
check this out:

1 Like

Puzzles grant XP. If you want to compete on XP level, check out https://chadok.info/codingame/leaderboard_xp.html

1 Like

After checking your profile page now I understand why you know this.
300+ solutions in ALL languages… OMG! :slight_smile:

1 Like

I extended the data source to the Top5000 players from CP leaderboard
(Cutoff is at CP=6482, which can be easily achieved by a few CoCs, Golfs, Optim or Multis.)

These are the per language toplists:


Westicles dominates the field…

This is the overall top15 for highest # of solutions in a single language, in total and # of achievements:
languages3

As getting this data is a bit API heavy, I did it just once and won’t make an online page for it. Also, it does not change too rapidly.

5 Likes

306 solutions in all languages … What the actual f… oO

2 Likes

But there’s no miracle way for chadok.info to locate high-XP users if they don’t appear on the CP leaderboards.

That’s real easy to automate, once you have it in one language.
I dare add it’s actually a pretty sensible counter-measure to the deplorable decision that was made to hide the solutions in languages you haven’t solved it in.