Code On Time continue d’évoluer et de surprendre ! Pour cette 5e édition, plus de 500 participants ont relevé le défi, alliant logique et programmation dans un univers immersif inédit. Une fois encore cet événement a su rassembler la communauté IT autour d’un challenge à la fois ludique et formateur. Retour sur cette 5e édition qui a mis à l’épreuve les talents de chacun, tout en sensibilisant à une cause essentielle : le nettoyage des mers.

Depuis son lancement en 2019, Code On Time s’est imposé comme un rendez-vous incontournable pour les passionnés de code et d’algorithmie. Cette année, le concours a pris une nouvelle dimension avec un format Escape Game Virtuel, accessible aussi bien aux développeurs aguerris qu’aux amateurs de défis logiques. Dans un décor inspiré du monde maritime, les participants ont dû résoudre des énigmes et optimiser leurs stratégies pour progresser.
Dans les sections suivantes, nous revenons en détail sur les principales épreuves de cette édition, en dévoilant des pistes de résolution et des stratégies employées par les meilleurs joueurs. Vous y trouverez aussi quelques conseils pour briller lors des prochaines éditions !
Code On Time 2025 : une édition inédite
Développeurs expérimentés, débutants, passionnés de logique… Vous avez été plus de 500 à vous inscrire à cette édition ! Meritis vous félicite pour votre persévérance et votre talent qui ont fait de cette édition un véritable succès.
Un grand bravo à Benjamin Butin (alias sullyper) qui a terminé en tête avec un score exceptionnel de 18 574 points, remportant 500€ en chèque cadeau !
Depuis 2019, Code On Time s’est rapidement imposé comme un concours de code de référence en France. Ainsi, pour cette édition et pour les suivantes, Meritis a décidé d’amener ce projet plus loin avec :
- Une plateforme dédiée pour jouer et rejouer à tous les concours : CodeOnTime.fr ;
- Un concept immersif inédit avec un format Escape Game Virtuel ;
- Une ouverture à tous les types de profils avec deux modes de jeux : le mode développeur et le mode classique.
En tant qu’entreprise engagée, Meritis a aussi souhaité faire de Code On Time un projet vertueux avec une plateforme écoconçue et un thème engagé pour ce nouveau concours : le nettoyage de la mer.
Ce nouveau concept a été un réel succès, avec un taux de satisfaction de 4,4/5 et des participants qui n’attendent qu’une chose : la prochaine édition !
Qu’est-ce qui pourrait te motiver à participer au prochain concours CodeOnTime.fr ?
« Je compte y participer car j’adore le concept donc je ne sais pas trop quoi dire. »; « J’y participerais volontiers quoiqu’il arrive. » « J’ai déjà envie d’y participer. »; « Je suis déjà motivée ! »; « j’attends déjà le prochain. »; « C’est quand le prochain ? J’suis chaud ^^ »; « Une édition pareille, avec son originalité et l’ambiance compétitive, est largement motivante pour moi. »..
Nous sommes ravis d’avoir pu rassembler de nombreux passionnés d’IT et de logique autour de ce nouveau concept et de leur avoir fait plaisir. Nous préparons d’ores et déjà la prochaine édition et celle-ci s’annonce palpitante 😉.
Éléments de résolution du concours
La particularité de Code On Time Cleansea résidait dans la nécessité de réussir les exercices en mode classique avant de débloquer le mode développeur. Dans les parties qui vont suivre, Gaëtan Eleouet, concepteur du concours et practice director Software chez Meritis, revient sur les principales épreuves des deux modes pour vous apporter des éléments de résolution.
Bonus : vous trouverez aussi la solution de notre vainqueur sullyper dans le mode développeur de la collecte des déchets, un exercice d’optimisation décisif !
Envie de retrouver les éléments de résolution de l’édition 2024 ?
👉Découvres notre article « Code On Time 2024 : Les éléments de résolution »

Mode classique, ouvert à tous – pas besoin d’être développeur !
C’est l’innovation de cette année : pas besoin d’avoir les bases en algorithmie ni d’être membre de la communauté tech pour participer.
1. L’énigme : les déchets sont partout


Dans ce concours sur le thème du nettoyage de la mer, les joueurs ont été plongés dans un environnement contaminé. L’énigme la plus facile consistait à identifier le déchet le plus présent dans les tas d’ordure éparpillés dans l’univers de l’escape game.
Éléments de résolution :
- En navigant dans l’escape game, on peut trouver 4 sacs poubelle ;
- En cliquant dessus, on peut les ouvrir et analyser leur contenu ;
- Il est alors facile d’identifier le déchet le plus récurrent ;
- Attention ! Pour éviter que la réponse soit trouvée par hasard, le contenu des poubelles change à chaque tentative !

2. L’énigme : quel est ce navire ?


En entrant dans la cabane au bout du ponton, on peut cliquer sur la baie vitrée qui donne sur les navires du port. En tant que gérant du port, il faut identifier le bon navire parmi ceux affichés en s’aidant des indices contenus dans sa description.
Pour éviter une réussite due au simple hasard, l’ordre des bateaux change à chaque tentative.
Éléments de résolution :
On peut deviner de quel bateau, il s’agit en lisant la description que voici :
« Parmi mille navires au port alignés, cherchons celui dont la coque porte une teinte comme une vieille peluche jetée [1].
Un fanion hisse ses couleurs, défiant la coque par contraste [2]. Autant de hublots que de voiles sorties, un équilibre aux lignes confondues [3].
Et l’ancre ? Je ne sais plus, comme la plupart des autres navires, sans doute dans l’oubli commun des quais saturés [4].
Mais sa grande voile, au vent déployé, gonfle d’un souffle, fierté retrouvée [5].
Dans ce chaos, ce désordre marin, ce navire étrange, au charme incertain, attend qu’un œil curieux le désigne. »

- [1] En observant le contenu des 4 sacs poubelle, on remarque qu’il y a une peluche, et celle-ci est rose. On sait donc qu’il s’agit d’un bateau rose.
- [2] Cette phrase nous indique que le fanion est d’une couleur différente de celle de la coque, ce qui nous fait exclure les fanions roses.
- [3] On comprend que le bateau que l’on cherche a soit un seul hublot et pas de petite voile, soit deux hublots et une petite voile.
- [4] Maintenant, il s’agit de savoir si le bateau a une ancre ou pas. Cette phrase nous dit que notre bateau est comme la plupart de ceux qu’il y a dans le port. En comptant les bateaux avec une ancre, on constate qu’ils sont plus rares. On sait donc que l’on cherche un bateau sans ancre.
- [5] Enfin, on comprend que l’on cherche un bateau avec une grande voile ronde (« gonfle d’un souffle »).
3. Les planches de salut !


Sur le ponton menant à la cabane du port, on clique sur le banc pour accéder à l’exercice « Les planches de salut ». Ce ponton est endommagé et, comme nous respectons l’environnement, l’objectif est de trouver la taille exacte des planches pour le réparer.
Éléments de résolution :
Le jeu ne donne pas d’indications quant à la valeur attendue, excepté l’unité attendue qui est en nanomètres. Il faut donc partir d’un ordre de grandeur important.
En essayant une réponse au hasard, on obtient une indication : soit trop grand, soit trop petit.

Il est bien sûr très compliqué de retrouver la combinaison en testant des valeurs au hasard. Pour résoudre l’exercice, il nous faut une méthode. En fouillant dans le bateau, on trouve cette méthode ! Cette note de cours nous explique la méthode dichotomique :

Une fois que l’on a trouvé une borne haute et une borne basse, c’est-à-dire une valeur trop grande et une valeur trop petite, il suffit d’en faire la moyenne pour retrouver une nouvelle borne. Ensuite, il s’agit de répéter ce processus avec les nouvelles valeurs pour les réajuster en fonction du résultat donné par la console (trop grand ou trop petit). Le but est de rétrécir le périmètre de recherche en faisant consécutivement la moyenne des valeurs trop grandes et trop petites.
4. Manuel utilisateur


En entrant dans la cabine du bateau, on trouve un manuel. Celui-ci est bien utile : comment démarrer le navire si on ne sait pas l’utiliser ?
Ici, l’objectif est de lire l’intégralité de ce manuel en naviguant via les boutons sous la page, mais ces derniers ne sont pas tous disponibles en même temps et de façon linéaire. Il faut donc trouver le bon ordre dans lequel activer les boutons.
Éléments de résolution :
Un seul chemin permettait d’aller jusqu’au bout en parcourant toutes les pages ! Pour lire l’ensemble du manuel, il faut parcourir les pages et tester les combinaisons en notant à quelles pages on peut accéder à partir de celle que l’on a ouverte.

Si on accède à la fin du livre, on ne peut plus accéder aux autres pages et c’est un échec. Une fois que l’on a identifié cette page, on identifie les combinaisons qui restreignent nos choix et qui y mènent. Il devient ensuite plus simple de trouver la bonne combinaison.
5. Océonar


À côté du manuel, on trouve le sonar du bateau, un outil crucial pour naviguer et éviter les obstacles, surtout dans une mer polluée ! En cliquant dessus, on tombe sur l’analyse du sonar qui ressemble à un labyrinthe. Notre position actuelle est indiquée par une croix et notre objectif est de se trouver un chemin pour naviguer et arriver à bon port en renseignant le bon code !
Éléments de résolution :
En partant de la croix, il faut identifier le bon chemin en sachant que le bateau avance toujours d’une case vers la droite. Pour se frayer un chemin, il faut utiliser le codage indiqué [H] : haut ; [B] : bas ; [Espace] : tout droit.
Voici une solution possible :

Je vous invite à l’essayer… en utilisant la bonne combinaison ! 😉
6. Porté par les vagues


Toujours dans le bateau, à gauche du sonar, on trouve le commutateur. Celui-ci sert à choisir le régime du moteur et à adapter celui-ci en fonction de la mer. Le changement climatique impacte ta navigation et tu dois faire face à la houle !
Cette énigme consiste à gérer au mieux ton moteur pour arriver à bon port. Il faut obtenir un score optimal en cliquant sur les régimes moteurs les plus adaptés à ces contraintes :
« Le navire doit choisir à chaque instant entre 4 régimes, chaque ligne apporte un score différent à chaque instant.
Il faut choisir pour chaque moment le régime que le navire doit suivre, attention, il ne peut changer de régime que 2 fois en 5 instants, (sinon cela détériore fortement le moteur).
On peut par contre sauter des lignes, c’est à dire passer directement de la ligne 1 à la ligne 4. »
Éléments de résolution :
Il faut construire un chemin qui respecte les règles, l’énigme est validée si le score est supérieur à 130. Comme il s’agit d’un jeu d’optimisation, on peut aller au-delà pour battre les autres joueurs !
Chaque rangée verticale représente un instant et les chiffres de ces rangées représentent des régimes. En cliquant sur chaque régime, on peut voir le score évoluer, les régimes plus élevés donnent plus de points, ce sont donc ces régimes qu’il faut privilégier tout en respectant les règles. Si l’on ne les respecte pas, le score retombe à 0. Pour tester les combinaisons et adapter le score, on peut bien sûr cocher et décocher les régimes.
La solution optimale apporte 150 points !

7. Les crabes mystérieux


Maintenant, nous quittons le bateau pour aller sur la plage. Celle-ci est merveilleuse malgré ces maudits sacs poubelles ! En face, on voit un crabe sur le sable : en cliquant dessus, on se rend compte qu’il semble vouloir nous indiquer quelque chose, mais pour cela, il faut le suivre… En suivant ses traces, l’objectif est de déterminer sa position finale !
Éléments de résolution :
La position initiale du crabe est au milieu. En cliquant sur l’image, on voit les flèches qui représentent les mouvements du crabe. Il faut alors trouver la position finale du crabe en observant ses déplacements.
Il faut trouver la position finale du crabe après l’ensemble de ses déplacements. Difficile à suivre ! Mais une stratégie efficace est de compter les paires qui s’annulent :
- Lorsque le crabe fait un pas en haut puis en bas, le déplacement s’annule ;
- De même lorsqu’il fait un pas à gauche puis à droite ;
- Un pas à droite et un pas en bas compte pour un pas.

On trouve alors de combien de cases s’est déplacé le crabe.
8. La lettre


Retour dans la cabane ! En fouillant le bureau, on pouvait trouver une lettre. Cette lettre a été écrite par le gérant du port qui souhaite rencontrer un exploitant pour mettre en place des mesures de réduction d’émissions. Le problème est que l’on ne sait pas de qui il s’agit alors que le gérant est parti ! Dans cet exercice, il faut trouver qui est le destinataire de la lettre pour la lui envoyer.
Éléments de résolution :
La lettre est sans doute l’énigme qui aura posé le plus de difficultés à cause du nombre d’étapes nécessaires à sa résolution et aux nombreux indices à rassembler.
Pour trouver le nom de la personne à qui envoyer la lettre, voici le cheminement qu’il faut suivre :

1.
Dans le bureau, à côté de la lettre, on a les relevés de pollution. Ici, il s’agit d’identifier le jour où il y a eu le plus de pollution dans l’année 2024
2.
Toujours dans le bureau, il y a un ordinateur. En rentrant la date correspondant au pic de pollution, on a l’immatriculation d’un navire


3.
En sortant du bureau, sur le mur, on peut voir qu’il y a la liste des emplacements des bateaux ainsi que des autocollants. Dans la liste, on trouve le trigramme de la compagnie correspondant à l’immatriculation que l’on a trouvé sur l’ordinateur
4.
A droite de la liste, on trouve des autocollants qui appartiennent à des compagnies maritimes. En les observant, on constate que l’un d’eux affiche un trigramme correspondant à un emplacement répertorié, ainsi que le nom complet de la compagnie :

Maintenant que l’on a le nom de la compagnie, il ne nous reste plus qu’à trouver le nom du propriétaire qui est le destinataire de la lettre !

5.
De retour sur la plage, à côté des ordures, on remarque un vieux magazine. En bas de la page, on voit une liste d’auteurs et l’on remarque que certains d’entre eux sont associés aux compagnies. Dès que l’on trouve celle que l’on a identifiée, on sait qui est notre destinataire !
Avec ces pistes pour résoudre le mode classique, je vous invite à revivre l’édition 2025 de Code On Time !
Mode développeur : pour les férus d’algorithmie ou les dev curieux !
Maintenant que l’on a fait le tour des exercices en mode classique, je vous propose à présent quelques pistes de résolution pour les principaux exercices en mode développeur.
Ces épreuves ne sont disponibles que lorsque le mode classique est réussi. Pour y accéder, il suffit de cliquer sur le clavier en haut à gauche des fenêtres.
1. Manuel utilisateur
Ici, la consigne est la même qu’en mode classique : lire toutes les pages, mais avec une approche plus complexe.

Éléments de résolution :
Pour résoudre « proprement » l’exercice, il faut regarder le jeu de données. L’énoncé ne le précise pas, mais il n’y a pas de cycles dans le graphe. On peut donc utiliser un algorithme classique de tri topologique pour construire l’ordre total sur les pages et ainsi construire la solution.
Pour résoudre de façon moins élégante, on peut aussi faire le tri topologique sans vérifier la contrainte de l’absence de cycles…
La première page n’était pas forcément la page 0…
Envie d’explorer un autre exercice reposant sur des graphes impliquant un tri topologique ?
👉Découvrez notre article du SWERC 2024 : un exercice d’algorithmie et sa résolution !

2. Océonar
Dans le mode développeur d’Océonar, on doit trouver le rayon minimal des cercles dont le centre nous est donné pour que le passage de l’Ouest en Est soit bloqué.

Éléments de résolution :
Il faut ici faire une dichotomie pour trouver le rayon, mais ce n’est pas si simple.
On peut construire un graph, avec les nœuds qui sont les cercles ; deux nœuds sont connectés avec le rayon donné s’ils se touchent.
La difficulté est ici le nombre de cercles important : 300 000 cercles. Dans le pire des cas, on aurait 90 000 000 000 d’arrêtes !
Une façon de savoir si deux nœuds sont accessibles sans construire les arrêtes est d’utiliser une structure union find, complexité en O(n) qui rend possible le fait de savoir si un rayon est suffisant ou non en un temps raisonnable.
3. Entre les vagues
Comme pour la version en mode classique, il faut trouver la combinaison idéale de régimes moteur, mais cette fois-ci avec un jeu de données plus grand !

Éléments de résolution :
Toutes les solutions valides sont acceptées. Il est même possible de le faire à la main, mais difficile de trouver le maximum dans ce cas.
Une solution possible est de reconnaître un problème de programmation dynamique qui permet de trouver l’optimum en un temps raisonnable.
4. Les crabes mystérieux
Une fois que l’on a trouvé la position du crabe en mode classique, il faut trouver le message qu’il veut nous faire comprendre !

Éléments de résolution :
1- À partir d’une liste de déplacement, on doit trouver le message. Ce message est :

2- Il faut alors changer son algorithme pour ses règles modifiées et l’on trouve alors :

5. Collecte de déchets marins


Il est temps de se remonter les bretelles et de passer à l’action pour collecter les déchets marins !
Ici, il s’agit de modéliser une stratégie optimale de collecte des déchets marins à l’aide de bateaux collecteurs de déchets.
Éléments de résolution :
Il s’agit ici d’un exercice d’optimisation, l’objectif est de maximiser son score, toute solution valide est acceptée.
L’exercice d’optimisation pouvait faire un peu peur au départ par son énoncé plus long que les autres… La version développeur propose le même exercice mais avec des jeux de données plus grands (9 jeux de données au total).
Une façon de chercher une solution est de créer des cycles que l’on va positionner sur la carte pour maximiser le score. Par exemple :

Certains ont construit leurs cycles sous Excel :

Certains ont même construit manuellement les cycles. Les cycles peuvent contenir une ou plusieurs bases !
Pour un cycle avec une base, un chemin de longueur 44 était l’optimum pour avoir le temps de ramasser l’ensemble des déchets du chemin.
Certains des jeux de données étaient solvables manuellement (1, 2 et 5). Pour les autres, l’approche pouvait être complétée en générant les chemins de façon algorithmique et en explorant des variations autour.
Le vainqueur Sullyper explique ainsi :
« Je génère une solution de base.
Je fais un post-processing pour améliorer.
Pour la solution de base, pour le 4 j’ai fait à la main (1, 2, et 5 j’ai complètement résolu à la main, c’était assez simple aussi).
Pour les autres :
Le medium : j’ai généré un cycle de 10 bases (qui tourne autour de la carte). De chaque base, il y a 3 chemins qui partent O, N, E et qui se rejoignent juste avant la prochaine base.
Pour les autres, je fais deux chemins de 25 bases qui tournent autour de la carte (Nord Sud) pareil.
Pour générer ces chemins, j’ai utilisé un BS (Beam Search, recherche en faisceau) qui fixe la distance entre les bases (valeur choisie en fonction du test, j’ai essayé plusieurs choses), et les chemins ne peuvent jamais descendre, que monter ou bouger latéralement. Je bouge les 3 chemins en parallèle.
Le post processing, c’est un SA (Simulated Annealing, Recuit simulé) qui fait de petites variations sur mes chemins et score en faisant une simulation complète. »
Un aperçu d’une solution possible :

Anecdote amusante : la première version de l’exercice utilisait les directions en anglais, NWES. J’ai ensuite tout rendu en français mais laissé le juge accepter également le W pour Ouest. Et certains participants sont s’en rendu compte !
Les scores maximums atteints pendant le contest sur chaque dataset :
46, 48, 676, 3771, 78, 2803, 2008, 2863, 2895
L’algorithmie, c’est les bases essentielles pour un code optimisé, mais au delà du code, d’autres facteurs comptent !
👉Découvrez notre livre blanc « Livre Blanc Software Craftsmanship »

Bonus
1. Le sous-marin

En fouillant dans le port, on pouvait remarquer qu’un sous-marin jaune était caché près d’un bateau. En cliquant sur le petit bout qui dépassait, le sous-marin nous dévoilait une chanson entraînante ! Ce bonus ne donnait pas droit à des points supplémentaires.
2. Le dauphin

En se rendant sur la plage, et en promenant sa souris pour trouver des exercices et des indices, on pouvait trouver un dauphin caché dans la mer. Ce bonus apportait 1 point !
Le mot de Gaëtan

« C’était un plaisir de concevoir l’ensemble de l’histoire et des exercices et un plaisir encore plus grand d’interagir avec certains d’entre vous par mail pendant le contest. Je vous espère ravi d’avoir passé un peu de temps sur la plateforme et j’ai hâte de vous retrouver pour une prochaine édition. »
Gaëtan Eleouet, créateur et concepteur de Code On Time
Rendez-vous à la prochaine édition de Code On Time !
Nous sommes impatients de démarrer la prochaine édition du concours. En attendant, vous pouvez rejouer à cette édition mais aussi aux précédentes sur notre nouvelle plateforme CodeOnTime.fr !
En veille ou à l’écoute du marché ?
Découvrez nos dernières offres !
Vous avez aimé cet article ?
Abonnez-vous à notre newsletter pour ne rien rater de l’actualité Tech et Finance.

Pas encore de commentaires