Coding challenges

Coding challenges

05/10/2021 0 Par Vincent

Nous connaissons de nombreux jeux de programmation (disponible sur Steam ou autres plateformes) comme Shenzhen I/O, TIS-100, Comet64, Exapunks, MHRD, Human Ressource Machine qui utilisent des langages souvent factices ou simplifiés mais il existe également des plateformes qui offrent des jeux, aventures et tournois basés sur de vrais langages dans lesquels vous affrontez de vrais programmeurs (du niveau débutant à (très) expérimentés).

Avant toute chose, nous ne dénigrons pas les jeux comme TIS-100 ou Comet 64. Les langages qu’ils utilisent, bien qu’allégés, sont parfaits pour comprendre la dynamique de la programmation et les défis demandés sont parfois très complexes. On pourrait même dire que plus un langage est « basic » (comprendre limité en terme d’instructions disponibles), plus il est difficile à maitriser. Cependant les attentes ne sont pas les mêmes…

Voici ma petite sélection de site que j’ai trouvé et sur lesquels vous allez pouvoir passer de nombreuses heures à apprendre/comprendre/programmer/développer. L’ordre n’a pas d’importance. Personnellement, j’ai adoré le premier et je continue à avancer sur le second mais il ne s’agit pas d’un classement par difficulté ou intérêt.

1# Robocode

Site : https://robocode.sourceforge.io/

Surement l’un des plus connus dans le genre. Personnellement j’adore. Il s’agit de programmer un petit robot afin qu’il affronte de façon autonome d’autres robots similaires dans une arène fermée. L’objectif est d’être le dernier survivant. Ce programme est utilisé par de nombreuses universités pour encourager le développement et l’optimisation de code et propose un aspect ludique à la programmation. Que le meilleur code gagne.

Dans sa version officielle et originale, la programmation du Robot se fait en Java ou en .NET. Le projet existe depuis 2001 et propose chaque année de nouvelles mises à jour notamment de la correction de bugs et la mise à jour des versions de Java.

Langages : JAVA et .NET

Le projet connait de nombreux fork qui permettent de coder également dans les langages suivants : C++/C#/Rust

2# Terminal (C1Games)

Site : https://terminal.c1games.com/home

Mon petit coup de cœur. A l’heure actuelle, je ne joue plus qu’à celui là ! L’objectif ressemble à Robocode. Il s’agit d’un jeu de type Tower-Defense. Dans une arène, l’objectif est d’attaquer et se défendre contre le code d’un autre joueur. Contrairement à Robocode dans lequel on joue contre l’IA, ici ce sont les codes d’autres joueurs. Il existe un système complet de tournois avec des cashprizes importants chaque saison.

Vous pouvez dans un premier temps appréhender le fonctionnement en jouant à la souris puis concevoir votre propre code. Ensuite le confronter à des programmes aléatoires ou aux codes des programmeurs les plus récompensés de la plateforme. Viennent ensuite les tournois où vous devrez survivre le plus longtemps possible avec « votre » programme.

Les développeurs proposent trois langages : Java, Python et Rust. Sans surprise, le Python occupe la première place devant le Java et le Rust.

Langages : Python, Java, Rust

3# Halite

Site : https://halite.io/

Halite, c’est globalement la même chose que Terminal mais avec plus de joueurs. Il y a 4 versions : Halite I, II, III et IV. Chaque version apporte de nouveaux langages et un modèle de « robots » de plus en plus complexe. Il est possible de jouer à toutes les versions pour se familiariser avec l’objectif de Halite.

Je n’ai encore jamais essayé, j’y réfléchi ; pourquoi par en C++.

Langages : Python, Java, C++

4# Codin Game

Site : https://www.codingame.com

Tout un tas de jeux et aventures à coder. Sur ce site, les premiers niveaux seront gratuits puis cela devient rapidement payant si l’on veut s’amuser un peu. Il y a une grande variété d’objectif, chaque type de « jeu » codable dans plusieurs dans langages situés ci-dessous. C’est une mine d’or si vous adorez coder pour le plaisir. De challenges à réaliser en quelques minutes contre la montre, d’autres vous emportent pour des nuits blanches entières et nécessite de travailler en coopération avec un ou plusieurs équipiers. Le potentiel est fou. A essayer de toute urgence…

Langages : Bash, C, C++, C#; D, F#, Go, Haskell, Java, JavaScript, Kotlin, Lua, Objectif-C, Pascal, Perl, PHP, Python, Ruby, Rust, Scala, Swift, VB.NET

5# Code Wars

Site : https://www.codewars.com/

Code Wars est un peu plus classique. Globalement, le site vous propose des morceaux de code (dans l’un de 25 langages de la plateforme) et vous propose de le debugger ou le compléter pour avancer dans les niveaux. C’est à capture the flag classique dans lequel la difficulté augmente à chaque nouveau niveau. Au départ, il peut ne manquer qu’une virgule entre deux arguments ; après plusieurs heures sur le même code, vous avez à retrouver une 50ène de ligne manquante au code source. Encore une façon de s’amuser avec du code, du vrai code. Ci-dessous la liste des langages du site :

Langages : C, C++, C#; F#, Go, Haskell, Java, JavaScript, Kotlin, Lua, NASM (oui assembleur), PHP, Python, Ruby, Rust, Scala, Shell, SQL, Swift

Bonus : MicroCorruption

Site : https://microcorruption.com/

Volontairement en dernière position, ce CTF (Capture The Flag) est ultra technique et réservé aux plus téméraires. Ici vous allez travailler sur un microcontrôleur de la marque Texas Instruments, modèle MSP430. Il est basé sur un CPU 16 bits utilisant une architecture RISC. La programmation se fait en Assembleur. Vous devez hacker le code à l’aide d’un débugueur, une visualisation de l’état de la RAM et des registres. Le but est d’ouvrir un cadenas niveau après niveau. Objectivement, c’est à essayer si : 1/ vous travaillez régulièrement en assembleur ou 2/ vous avez vraiment beaucoup de temps à perdre. L’assembleur 16 bits n’a plus un grand intérêt dans l’industrie sauf peut-être certains domaines très spécifiques ou travailler chez un fondeur de semi-conducteurs.

Langage : Assembleur (16bits RISC)