REX : Mon premier challenge CodinGame

11 mai 2021

Codingame est principalement un site d’entraînement au langage de programmation utilisé par les recruteurs. Mais il ne se limite pas seulement à cet univers de test et d’évaluation. Il existe également un système de challenge qui m’était jusque-là complètement inconnu. 

Pendant une semaine entière, un défi est relevé par la communauté. Le but ? Des bots/robots codés par les participants s’affrontent par niveaux ou ce qu’on appelle des ligues (bois, bronze, argent, or, legend).

CondinGame, qu'est-ce que c'est ?

Idée reçue

Codingame était déjà passé dans mon radar mais je n’avais, à l’époque, pas été convaincu par ses puzzles games servant principalement à test er nos compétences en langage de programmation. Mon avis a bien évolué et a dépassé cette idée préconçue que je m’en étais faite.

Le hasard d'une rencontre

Le hasard fait bien les choses car durant une de mes missions j’ai été amené à rencontrer une équipe de “vétérans” de Codingame. Ils m’ont alors présenté un plus large éventail des possibilités du site, avec des défis plus aboutis.

Les avantages

L’idée de pouvoir coder un bot pour un jeu compétitif en python était pour le moins séduisante. Surtout que le site a eu la bonne idée de proposer les librairies de nos jours indispensables : numpy et pandas.

Mise en place

Après cette redécouverte de la plateforme, je me suis joint à leur équipe pour participer quelques jours plus tard au  Fall Challenge 2020 .

Ce challenge d’une semaine a pour thème un jeu de plateau physique qui a, pour l’occasion, été codé par les équipes de Codingame.

“Le jeu se déroule dans un magasin de potions dans lequel se trouvent deux sœurs jumelles sorcières, chacune tentant de prouver qu’elle est plus douée que l’autre dans la préparation de potions. Elles ont organisé un petit concours : gagner plus de rubis que sa sœur en vendant des potions. Cependant, la hutte de sorcière où est situé leur magasin n’est pas très grande, elles doivent partager le même espace de travail et gérer les mêmes commandes. “



“Chaque joueur contrôle une sorcière. Chaque sorcière a accès à son propre inventaire d’ingrédients ainsi qu’à une liste de sorts qu’elle a appris. Ces sorts sont utilisés pour transformer un ensemble donné d’ingrédients en un autre.Chaque commande est une liste d’ingrédients nécessaires pour préparer une potion et gagner des rubis. Une partie se déroule sur plusieurs tours. À chaque tour, les joueurs effectuent une action simultanément.

Ingrédients : Il y a 4 types d’ingrédients, de valeur croissante. Les types sont indexés de 0 à 3” (source : Codingame).

Pour plus de renseignements sur les règles du jeu vous pouvez consulter  cette vidéo de tutoriel  (en anglais). 

Déroulé du challenge

L'interface


L’IDE de Codingame : à droite la partie code qui est auto-remplie avec les informations essentielles pour récupérer les inputs et générer les outputs ; à gauche la fenêtre du jeu qui permet de suivre les parties étapes par étapes ainsi qu’une fenêtre de débogage. 

Les ligues

Après avoir testé son bot contre une IA, on lance une série d’affrontements contre les autres participants pour calculer son score au sein d’une ligue (bois, bronze, argent, or et legend), qui s’achève contre un boss.
Si l’on est victorieux, on passe dans une ligue supérieure (si celle-ci est débloquée). L’ensemble des ligues n’est pas accessible dès le départ mais se débloque à un rythme d’une tous les 2 jours. À noter qu’une nouvelle ligue apporte de nouvelles règles. 



Il y a donc dans cette compétition un système régulier de validation pour passer à des niveaux plus élevés, ce qui donne l’occasion de perfectionner son code et discuter stratégie avec son équipe. D’où l’intérêt d’en avoir une !

Se familiariser avec les règles du jeu

Au début même les experts utilisent python ou un autre langage permettant de prototyper rapidement et se familiariser avec les règles et l’interface. Chaque challenge ou puzzle impose un format spécifique aux inputs et outputs, même si l’interface reste la même. Ce passage est le plus déroutant pour un novice. 
Heureusement une fenêtre de log permet de comprendre étape par étape le résultat de notre algorithme.

Évolution des règles

Comme dit précédemment, l’avancement se décompose en ligues. L’évolution dans les premières ligues se fait assez rapidement. Mais tout se complique lorsque les ligues se débloquent avec l’ajout de nouvelles règles. 


Exemple : à partir de la ligue argent, un système d’achat de sort à contester avec l’adversaire est mis en place. Si on n’a pas adopté des bonnes pratiques de code en début de challenge ces ajouts peuvent obliger à tout réécrire.





Quelques conseils pour bien commencer !

  • De bonnes pratiques de code sont très efficaces pour ne pas perdre de temps.
  • Bien choisir son algorithme : a priori partir au plus simple quitte à brader les performances et le faire évoluer en fonction des nouvelles règles de jeu. 
  • Les performances : chaque boucle de calcul ne doit pas dépasser 80 ms, dans la précipitation j’ai oublié que les performances de la bibliothèque pandas sont très inférieures à celles de numpy.
  • Visionner les derniers matchs de notre bot mais également des adversaires, on peut par exemple “charger” un bot pour s’entraîner contre lui. 
  • Une semaine est un temps très court, il faut s’appuyer sur son équipe pour avancer rapidement sur les stratégies et les choix algorithmiques.
  • Ne pas hésiter à copier les données d’entrée dans son IDE préféré (pour moi un notebook) et tester des fonctionnalités pour accélérer le débogage.

Interface pour visualiser nos derniers combats. Elle se paye le luxe d’avoir un système de replay intégré. 

Aller plus loin

Score officiel

À la fin du challenge j’ai terminé en ligue argent malgré de mauvaises performances du code et une prédiction de l’algorithme avec seulement 3 coups d’avance. 



Ce challenge était plutôt compliqué si on compare mon score avec celui de mes collègues plus expérimentés que moi. Cela est surtout dû aux changements de règles, comme l’achat de sort, qui oblige à décomposer notre algorithme en 2 phases lors d’une partie.
Même si l’exercice demande beaucoup de temps pour espérer être performant, l’expérience est addictive !


Je décide de continuer en me fixant comme objectif le rang or… Puis quelques jours plus tard le rang legend.

Challenge en solitaire

Même le challenge officiellement terminé, les bots des participants continuent de s’affronter. On peut donc continuer à s’entraîner pour améliorer son score. 



Cette première expérience ajoutée aux informations récoltées dans les post mortems des participants m’a permis de mettre en place une approche beaucoup plus efficace. Je m’étais d’ailleurs fixé un autre challenge personnel : concurrencer des langages plus bas niveau avec python.

  • Création d’un simulateur simplifié du jeu en python à partir des données d’entrée (liste des potions et recettes).
  • Un code pour tester différents hypers paramètres lié à l’algorithme. 
  • Un nouvel algorithme de recherche en faisceau, le Beam search, plus performant (beam Search  https://en.wikipedia.org/wiki/Beam_search ).
  • Adapter mon code pour prédire les coups de l’adversaire.

Événement marquant

Si je devais ne citer un événement marquant, ce serait celui de mon passage contre le boss entre les ligues or et legend. Sa puissance/son score dépend également de ses victoires contre les autres participants. Après la semaine officielle, il a tellement gagné en puissance qu’il était loin devant les autres participants. Je restais systématiquement à la seconde place juste derrière lui… Frustrant.


Pour le vaincre ma stratégie fut donc de faire varier les hyperparamètres de mon modèle en fonction de sa stratégie et de relancer le fil des combats toutes les 15 minutes. Pas très subtil mais quelle satisfaction quand j’ai finalement atteint le rang légende !

Conclusion


En conclusion, ce type de challenge est addictif et j’ai personnellement atteint mes objectifs, voire plus en accédant au rang légende. En bonus je suis également arrivé dans les premiers sur les participants avec le langage python. 

Grâce à une méthode orienté numpy mon code a pu affronter des langage plus véloces comme C# ou C++, avec une prévision à 15 coups d’avance ce qui était largement suffisant. Je reviendrai d’ailleurs dans un prochain article sur l’utilisation de numpy. 

Si vous avez des questions sur les challenges Codingame ou si vous voulez simplement échanger autour de ce sujet, n’hésitez pas à nous contacter, nous nous ferons un plaisir de vous répondre !  

Ressources Agaetis

par David Walter 6 novembre 2025
Project Context Michelin aimed to develop a new generation of digital services based on data from connected tires. The goal was to deliver added value to truck fleet managers and maintenance centers worldwide. The challenge lay in the collection, processing, and supervision of massive sensor data, while ensuring robustness, scalability, and relevance of analytics. Objectives The main objective was to establish a technical and architectural framework to: Efficiently collect and process data from connected tires Monitor data flows and measure the impact of business use cases Create a Big Data platform ready to evolve with growing data volumes Mission Duration A long-term engagement , combining initial architectural study, implementation of monitoring systems, and ongoing support. Implementation Agaetis leveraged its Data and Cloud expertise to: Initial architecture study: Define technological and structural choices Platform monitoring: Implement monitoring principles to ensure robustness and availability Load analysis: Evaluate the impacts of various business use cases Big Data framework definition: Integrate best practices to accelerate implementation Data Science work: Perform domain-specific analysis and develop new indicators and services Results Achieved New digital services: Creation of innovative solutions for fleet managers Robust and scalable platform: A Big Data environment ready to handle massive data volumes Operational optimization: Improved traceability and KPI tracking Enhanced innovation: Data transformed into strategic levers for Michelin Key Success Factors Agaetis’ expertise in Big Data and IoT data processing End-to-end methodology: From architecture to Data Science Immersion in the client’s business environment Proactive supervision ensuring robustness and reliability  And You? Are you wondering about: Leveraging data from your connected equipment ? Creating new digital services based on Data? Implementing a robust and scalable Big Data architecture ? 👉 Contact our experts to transform your IoT data into innovative, value-generating services.
par David Walter 6 novembre 2025
Project Context France’s first research foundation dedicated to innovation in pain management aimed to launch a market-ready application resulting from its clinical research and development program. The goal was to transform the app into a Digital Therapeutic (DTx) reimbursed by the national health insurance system. Objectives The organization focuses on driving healthcare innovation through extensive collaborations with hospitals, research institutes, universities, and technology companies. The main challenges included: Transforming an application into a Digital Therapeutic (DTx) reimbursed by the national health system. Managing the transition of patients to this new platform. Preparing a new data warehouse to support scientific research. Mission Duration 3 collaborators over 3 years Methodology Agaetis provided its expertise through targeted and structured actions: Audit of existing systems: Evaluation of current infrastructure to identify needs and areas for improvement. Decision support for partner selection: Assistance in choosing competent and reliable technology partners. Technology advisory: Guidance on application architecture, security, and scalability to ensure long-term viability. Results Achieved Development of an application supporting patients in chronic pain management, progressing toward recognition as a reimbursable DTx. Rigorous technical assessment and selection of strategic partners. Adherence to roadmap milestones , ensuring steady progress and alignment with expectations. This project highlights how Agaetis leverages its technological and strategic expertise to transform challenges into innovative, effective solutions — creating tangible value for clients in the healthcare sector.
Show More