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

4 septembre 2025
Le contexte du projet : Un prototype de stylo connecté destiné au secteur de la santé avait rencontré un vif succès auprès du marché. Face à une demande croissante, le client devait passer à une phase d’ industrialisation afin de répondre aux attentes tout en respectant les réglementations strictes en matière de données de santé ( Hébergement de Données de Santé – HDS ). L’objectifs : L’objectif principal était de transformer un prototype en solution industrialisée en : définissant les critères de sélection et les options technologiques, garantissant la conformité aux réglementations de santé, et assurant la montée en charge (scale-up) pour répondre à la demande croissante. Durée de mission : Mission en plusieurs phases : cadrage, tests techniques, mise en conformité et accompagnement au scale-up industriel. Mise en œuvre : Agaetis a déployé une approche complète combinant expertise IoT et réglementaire : Définition des critères de sélection : cadrage des besoins fonctionnels et techniques. Évaluation technologique : étude des solutions potentielles et tests de leur adéquation. Mise en conformité HDS : accompagnement dans la sélection de l’hébergement et structuration du modèle de données. Développement et industrialisation : assistance dans l’implémentation des composants techniques et préparation à la montée en charge. Résultats obtenus : Accélération de la production : industrialisation réussie permettant de répondre rapidement à la demande. Conformité assurée : solution alignée sur les exigences HDS et réglementations de santé. Innovation valorisée : passage du prototype au produit commercialisable sur le marché santé. Flexibilité opérationnelle : architecture et modèle de données prêts à évoluer avec les usages. Facteurs clés de succès : Expertise pointue en IoT santé et données réglementées . Approche sur mesure intégrant la dimension technique et humaine. Collaboration rapprochée avec les équipes du client. Vision orientée impact concret et mise sur le marché rapide. Et vous ? Vous vous interrogez sur : l’industrialisation de vos prototypes IoT santé, la conformité réglementaire (HDS, ISO, etc.) de vos solutions, ou la préparation de vos innovations pour passer du prototype au scale-up industriel ? 👉 Contactez nos experts pour transformer vos prototypes IoT en solutions santé industrialisées et conformes.
par David Walter 4 septembre 2025
Le contexte du projet : Ariane Group souhaitait optimiser le temps de contrôle dimensionnel des réservoirs de son lanceur spatial. Les méthodes traditionnelles, longues et peu satisfaisantes, ralentissaient la production et augmentaient les risques d’erreurs. Le besoin était de développer une application de contrôle qualité et dimensionnel intégrant de nouveaux moyens de mesure plus rapides et précis. L’objectifs : L’objectif principal était de concevoir et déployer une application installée sur un PC concentrateur capable de : lancer différents programmes de contrôle dimensionnel, intégrer des technologies de mesure avancées (profilomètres lasers, trackers laser), et améliorer la précision et la répétabilité des contrôles. Durée de mission : Mission de plusieurs mois, de la conception logicielle à la formation des équipes, en passant par l’intégration et les tests. Mise en œuvre : Agaetis a déployé une approche technique et collaborative : Développement de l’application : architecture logicielle adaptée aux besoins d’intégration industrielle. Collecte et traitement des données : intégration des mesures issues des machines à commande numérique, trackers laser et profilomètres. Optimisation des processus : automatisation des contrôles pour gagner en rapidité et réduire les erreurs. Accompagnement & formation : transfert de compétences aux équipes internes pour assurer la continuité. Résultats obtenus : Temps de contrôle réduit : amélioration notable de la productivité. Précision accrue : fiabilisation des mesures grâce à l’intégration de nouvelles technologies. Réduction des erreurs : contrôles plus rapides et répétables. Compétences préservées : maintien de la connaissance technique dans l’organisation. Facteurs clés de succès : Expertise technique d’Agaetis en développement industriel et IoT . Grande flexibilité dans la collaboration avec Ariane Group. Intégration fluide des données issues de différents équipements. Approche orientée impact et résultats mesurables. Et vous ? Vous vous interrogez sur : l’optimisation de vos processus de contrôle industriel, l’intégration de nouvelles technologies de mesure, ou la digitalisation de vos applications qualité ? 👉 Contactez nos experts pour moderniser vos contrôles industriels et accroître votre performance opérationnelle.
Show More