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.
14 défis
- FacileIdiomes
Gérer un Option<i32> avec match
Écrire la fonction premier_pair(v: &[i32]) -> Option<i32> qui retourne le premier entier pair d'une slice, ou None si aucun n'existe, et la démontrer avec match.
rustDébutant#rust#option15 minmai 2026 - FacileIdiomes
Filtrer les pairs d'un Vec<i32>
Utiliser la chaîne iter().filter().collect() pour extraire les entiers pairs d'un Vec<i32> et les stocker dans un nouveau Vec sans modifier l'original.
rustDébutant#rust#iterateurs15 minmai 2026 - MoyenIdiomes
Chaîner des Result avec l'opérateur ?
Lire une ligne sur stdin, la parser en i32 et calculer son carré en chaînant les opérations avec l'opérateur ? pour propager les erreurs jusqu'au main.
rustIntermédiaire#rust#result30 minmai 2026 - FacileIdiomes
Liste des pairs via list comprehension
Construire la liste de tous les entiers pairs entre 0 et 20 inclus en utilisant une seule list comprehension.
pythonDébutant#python#list-comprehension10 minmai 2026 - DifficileIdiomes
Classe itérable Fibonacci avec __iter__ / __next__
Implémenter une classe Fibonacci qui produit les termes de la suite à l'infini, puis utiliser itertools.islice pour extraire les 10 premiers termes.
pythonAvancé#python#iterateurs45 minmai 2026 - FacileIdiomes
Compter les fréquences de mots avec un dict
Calculer le nombre d'occurrences de chaque mot d'une phrase et afficher le résultat trié alphabétiquement par clé.
pythonDébutant#python#dict15 minmai 2026 - FacileIdiomes
Échanger deux variables sans temporaire
Lire deux entiers, les échanger grâce à l'unpacking tuple de Python, puis afficher les valeurs échangées.
pythonDébutant#python#tuple5 minmai 2026 - MoyenIdiomes
Écrire un décorateur qui mesure le temps d'exécution
Implémenter un décorateur @chrono qui affiche sur stderr le temps d'exécution de la fonction décorée en millisecondes.
pythonIntermédiaire#python#decorateurs30 minmai 2026 - MoyenIdiomes
Écrire un context manager pour un fichier temporaire
Implémenter une classe Python avec __enter__ et __exit__ qui crée un fichier temporaire à l'entrée et le supprime automatiquement à la sortie du bloc with.
pythonIntermédiaire#python#context-manager30 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 - 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 - 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
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.