CodinGame

cg_home

Ça faisait un bon moment que je voulais te parler de CodinGame, et cette fois c’est la bonne !

J’ai découvert CodinGame il y a deux ans, dans le cadre du boulot. CodinGame, c’est un site qui porte plutôt bien son nom : on y joue à coder des algorithmes qui vont résoudre des problèmes posés sous forme de jeux. Ces jeux peuvent être solo, d’optimisation, ou multi-joueurs. Quelques exemples parleront beaucoup plus qu’un long discours, alors c’est parti !

Exemple 1 (solo / optim) : qui n’a jamais rêvé de programmer un vaisseau qui doit atterrir sur Mars ? CG l’a fait ! Toutes les secondes on te donne ta vitesse et ton inclinaison, et à toi (ou plutôt à ton programme) de prendre les bonnes décisions de puissance / rotation pour atterrir dans de bonnes conditions, et si possible en utilisant un minimum de fuel !

https://www.codingame.com/replay/solo/182832834

Exemple 2 (solo) : empêche Skynet de trouver une sortie, en détruisant plutôt judicieusement à chaque tour un des liens du réseau :

https://www.codingame.com/replay/solo/182835969

Exemple 3 (multi) : grosse course où chaque joueur contrôle deux pods, mais il suffit de passer la ligne d’arrivée avec l’un des deux pour gagner la course. Du coup, le second pod est souvent utilisé pour « tamponner » le premier pod adverse, et ça donne de jolies courses. Le replay est pas de moi, mon programme est pas au top du tout sur ce jeu !

https://www.codingame.com/replay/182833831

Exemple 4 (multi) : un jeu de stratégie où on contrôle rapidement plusieurs dizaines de drones, et où il faut explorer intelligemment pour capturer des zones de production, et finalement conquérir la base ennemie :

https://www.codingame.com/replay/174971402

Exemple 5 (multi) : un jeu qui ressemble un peu à Tetris, où il faut monter des gros combos pour remplir la grille de l’adversaire. Bon, mon bot est clairement pas terrible, mais on voit quand même quelques combos sympa :

https://www.codingame.com/replay/173439426

Voilà, il y a énormément de langages disponibles (26 pour être précis), donc n’importe qui ayant des bases minimales de programmation peut commencer facilement sur le site.
Pour débuter, je conseille les puzzle (problèmes) faciles de la section entrainement, ils permettent de se familiariser avec la plateforme, et se résolvent en moins de 50 lignes de code.

Ensuite, les compétitions multi-joueurs organisées en général sur une semaine (environ tous les 2 ou 3 mois) sont clairement le top.
Avec la pression du temps ça oblige à faire de nombreux choix, car il y a beaucoup de choses à faire :

  • choisir son langage à utiliser (pour ceux qui en maitrisent plus d’un, mais moi c’est Java ou rien)
  • définir son algorithme principal, et le peaufiner tout au long de la semaine
  • choisir de coder « vite et sale », au risque de faire une assiette de spaghettis qu’on ne peut plus toucher sans rajouter 10 bugs, ou « pas trop vite mais propre », au risque de pas finir à temps
  • investir ou pas du temps dans des tests unitaires, qui permettront de limiter les risques de régressions lorsqu’on fera évoluer le code
  • travailler sur les performances du code en terme de temps d’exécution (pour les algos gourmands), car on a que 100 ms à chaque tour pour prendre une décision,
  • passer du temps à bien comprendre les mécanismes du jeu, notamment quand il y a de la physique et des maths sous-jacentes,
  • analyser les stratégies des meilleurs, pour essayer de comprendre ce qui est important dans le jeu,
  • et plein d’autres choses qui dépendront du jeu en lui même…

Finalement, concernant la communauté des CodinGamers, elle est au top, beaucoup d’entraide sur le forum et sur le chat intégré, même pendant les compétitions !
A la fin des compétitions, les meilleurs écrivent un « post-mortem » où ils partagent largement leur stratégie (voir par exemple celui de la dernière compétition), si ce n’est des fois leur code en entier (ou presque) ! Il n’y rien de mieux pour apprendre et progresser, et là on est vraiment dans l’intelligence artificielle, avec des algos génétiques, du Monte-Carlo, du recuit simulé, etc…

Bon de mon côté (compte Jahz), après deux ans, j’ai fini une bonne partie des puzzles solos, accroché un moment un top 10 sur un jeu d’optimisation, mais rien de très remarquable (hormis une compétition « privée » dans mon entreprise). Mais le plus important, c’est que ce site m’a clairement redonné le gout de la programmation, et je pense avoir beaucoup progressé depuis que je suis sur CG.

Bref, je participerai très probablement à la prochaine compétition qui commence pile dans deux semaines. Et toi ?

cg_ghost

Publicités

Poster un commentaire en toute détente

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s