DÉFIS
Chaque défi est inutile. Aucun n'est une perte de temps : on code pour le plaisir et on apprend pour de vrai.
101 défis
- DifficileDyn. prog
Plus longue sous-séquence commune (LCS)
Implémenter l'algorithme de programmation dynamique pour trouver la longueur et une instance de la plus longue sous-séquence commune (LCS) entre deux chaînes de caractères.
polyglotteAvancé#dyn-prog#chaines60 minmai 2026 - MoyenChaînes
Trouver le plus court mot d'une phrase
Lire une phrase et afficher le mot le plus court qu'elle contient ; en cas d'égalité, afficher le premier dans l'ordre d'apparition.
polyglotteIntermédiaire#chaines#mots20 minmai 2026 - DifficileGraphes
Plus court chemin dans un labyrinthe ASCII (BFS)
Trouver le plus court chemin entre un point de départ S et une sortie E dans un labyrinthe représenté par une grille ASCII, en utilisant une recherche en largeur (BFS).
polyglotteAvancé#graphes#bfs75 minmai 2026 - DifficileParsing
Parser un CSV avec guillemets et virgules échappées
Implémenter un parser CSV respectant un sous-ensemble de la RFC 4180 : champs entre guillemets, virgules internes, guillemets doublés comme séquence d'échappement.
polyglotteAvancé#parsing#csv75 minmai 2026 - FacileBoucles
Imprimer les pairs entre 5 et 103
Afficher tous les entiers pairs compris entre 5 et 103 inclus, un par ligne.
polyglotteDébutant#boucles#sortie-standard10 minmai 2026 - MoyenRécursion
Calculer le N-ième terme de Fibonacci
Lire un entier N et afficher le N-ième terme de la suite de Fibonacci, en considérant F(0) = 0 et F(1) = 1.
polyglotteIntermédiaire#recursion#suites25 minmai 2026 - FacileArithmétique
Calculer la moyenne arithmétique de 3 notes
Lire trois notes entières sur des lignes séparées et afficher leur moyenne arithmétique arrondie à deux décimales.
polyglotteDébutant#arithmetique#moyenne10 minmai 2026 - FacileConditions
Trouver le maximum de trois entiers
Lire trois entiers donnés sur des lignes séparées et afficher le plus grand des trois.
polyglotteDébutant#conditions#comparaison10 minmai 2026 - FacileChaînes
Compter les caractères d'une chaîne
Lire une chaîne sur l'entrée standard et afficher le nombre de caractères qu'elle contient, sans compter le saut de ligne final.
polyglotteDébutant#chaines#comptage5 minmai 2026 - MoyenArithmétique
Lister les N premiers nombres premiers
Lire un entier N et afficher les N premiers nombres premiers dans l'ordre croissant, un par ligne.
polyglotteIntermédiaire#arithmetique#primes30 minmai 2026 - FacileImmutabilité
Trier un tableau sans muter l'original
Trier un tableau de nombres dans l'ordre décroissant sans modifier le tableau d'origine, en utilisant la syntaxe de copie superficielle de JavaScript.
javascriptDébutant#javascript#immutabilite15 minmai 2026 - MoyenAsync
Promise.all sur trois délais
Lancer trois promesses basées sur setTimeout (200 ms, 500 ms, 100 ms) en parallèle avec Promise.all et afficher le tableau de résultats une fois toutes résolues.
javascriptIntermédiaire#javascript#promesses25 minmai 2026 - DifficileIdiomes
Implémenter un EventEmitter on / emit / off
Écrire une classe EventEmitter avec les méthodes on, emit et off sans dépendance externe, puis démontrer son bon fonctionnement.
javascriptAvancé#javascript#evenements60 minmai 2026 - FacileIdiomes
Extraire des valeurs par destructuring
À partir d'un objet avec trois propriétés, extraire deux d'entre elles par destructuring en renommant l'une au passage.
javascriptDébutant#javascript#destructuring10 minmai 2026 - FacileChaînes
Inverser une chaîne caractère par caractère
Lire une chaîne sur l'entrée standard et afficher les caractères dans l'ordre inverse, sans utiliser de fonction d'inversion intégrée.
polyglotteDébutant#chaines#inversion15 minmai 2026 - MoyenChaînes
Inverser l'ordre des mots d'une phrase
Lire une phrase et afficher ses mots dans l'ordre inverse, séparés par un espace unique, sans modifier les mots eux-mêmes.
polyglotteIntermédiaire#chaines#mots20 minmai 2026 - FacileBoucles
Imprimer N astérisques sur une ligne
Lire un entier N et afficher exactement N astérisques consécutifs sur une seule ligne.
polyglotteDébutant#boucles#sortie-standard5 minmai 2026 - MoyenTri
Implémenter le tri à bulles sur une liste d'entiers
Trier une liste d'entiers en utilisant l'algorithme de tri à bulles, sans recourir aux fonctions de tri intégrées du langage.
polyglotteIntermédiaire#tri#algorithmes30 minmai 2026 - FacileSémantique
Tableau sémantique avec thead, tbody et scope
Créer un tableau HTML5 de 3 colonnes et 4 lignes de données avec <thead>, <tbody>, un <caption> et l'attribut scope="col" sur les en-têtes. Pas de CSS requis.
htmlDébutant#html#tables20 minmai 2026 - FacileSémantique
Formulaire accessible avec labels correctement liés
Créer un formulaire HTML5 avec trois champs (nom, email, message), chaque champ relié à son label via for/id, marqué required, et doté d'un attribut autocomplete adapté. Pas de JavaScript.
htmlDébutant#html#accessibilite15 minmai 2026 - DifficileIdiomes
Trier avec sort.Interface personnalisée
Définir le type Personnes []Personne et implémenter sort.Interface pour trier par âge croissant, puis par ordre alphabétique du nom en cas d'égalité d'âge.
goAvancé#go#tri45 minmai 2026 - MoyenConcurrence
N goroutines envoient sur un channel
Lancer 3 goroutines qui envoient chacune leur identifiant entier sur un channel chan int, puis consommer les 3 valeurs dans main et les afficher, en acceptant un ordre d'arrivée non garanti.
goIntermédiaire#go#goroutines35 minmai 2026 - FacileIdiomes
Construire une slice avec append
Lire un entier N sur stdin, construire la slice []int contenant les entiers de 1 à N en utilisant append dans une boucle, puis afficher la slice.
goDébutant#go#slices15 minmai 2026 - FacileIdiomes
Compter les fréquences avec map[string]int
Lire une ligne de texte sur stdin, découper les mots selon les espaces, compter leurs fréquences dans une map[string]int, puis afficher les paires triées par clé.
goDébutant#go#map15 minmai 2026 - MoyenVersionnement
Apporter un commit d'une autre branche
Utiliser git cherry-pick pour appliquer un commit spécifique depuis une branche feature sur la branche main. Gérer le cas d'un conflit avec --abort ou la résolution manuelle suivie de --continue.
gitIntermédiaire#git#cherry-pick20 minmai 2026 - FacileVersionnement
Amender le message du dernier commit
Utiliser git commit --amend pour corriger le message du dernier commit. Si ce commit a déjà été poussé, le forcer avec --force-with-lease en comprenant les implications sur l'historique partagé.
gitDébutant#git#commit10 minmai 2026 - FacileConditions
FizzBuzz classique de 1 à 100
Afficher les entiers de 1 à 100 en remplaçant les multiples de 3 par Fizz, les multiples de 5 par Buzz, et les multiples des deux par FizzBuzz.
polyglotteDébutant#fizzbuzz#conditions15 minmai 2026 - MoyenConditions
FizzBuzz avec règles paramétrables
Généraliser FizzBuzz en acceptant un nombre arbitraire de règles (diviseur → mot) et une borne supérieure.
polyglotteIntermédiaire#fizzbuzz#parametres30 minmai 2026 - FacileChaînes
Extraire le premier mot d'une phrase
Lire une phrase sur l'entrée standard et afficher uniquement son premier mot, défini comme la séquence de caractères précédant le premier espace.
polyglotteDébutant#chaines#parsing10 minmai 2026 - FacileChaînes
Extraire le dernier mot d'une phrase
Lire une phrase sur l'entrée standard et afficher uniquement son dernier mot, défini comme la séquence de caractères suivant le dernier espace.
polyglotteDébutant#chaines#parsing10 minmai 2026 - DifficilePiles
Évaluer une expression en notation polonaise inverse (RPN)
Lire une expression en notation polonaise inverse et afficher sa valeur entière, en utilisant une pile pour l'évaluation.
polyglotteAvancé#piles#evaluation45 minmai 2026 - DifficileParsing
Évaluer une expression arithmétique avec parenthèses
Implémenter un évaluateur d'expressions arithmétiques entières supportant +, -, *, /, les parenthèses et la priorité des opérateurs, sans utiliser eval() ni bibliothèque de parsing.
polyglotteAvancé#parsing#evaluation90 minmai 2026 - MoyenArithmétique
Différence en minutes entre deux heures HH:MM
Lire deux heures au format HH:MM et afficher la durée en minutes entre la première et la seconde, en supposant que les deux heures sont dans la même journée de 24h.
polyglotteIntermédiaire#arithmetique#temps30 minmai 2026 - MoyenGéométrie
Distance de Manhattan entre deux points entiers
Lire les coordonnées de deux points dans le plan et afficher leur distance de Manhattan.
polyglotteIntermédiaire#geometrie#distance20 minmai 2026 - DifficileDyn. prog
Calculer la distance d'édition de Levenshtein
Implémenter l'algorithme de distance de Levenshtein par programmation dynamique pour calculer le nombre minimal d'insertions, suppressions et substitutions permettant de transformer une chaîne en une autre.
polyglotteAvancé#dyn-prog#chaines60 minmai 2026 - MoyenListes
Détecter les doublons dans une liste d'entiers
Lire une liste d'entiers et afficher ceux qui apparaissent plus d'une fois, dans l'ordre de leur première occurrence.
polyglotteIntermédiaire#listes#detection25 minmai 2026
D'abord, faire marcher
On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)
Pas de mauvaise réponse
Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.
Trop dur ? Au suivant
Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.