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
- MoyenPiles
Vérifier l'équilibre des parenthèses, crochets et accolades
Lire une expression et déterminer si chaque parenthèse ouvrante a une fermante correspondante du bon type, imbriquée correctement.
polyglotteIntermédiaire#piles#parsing30 minmai 2026 - MoyenChaînes
Vérifier si deux mots sont anagrammes
Déterminer si deux chaînes de caractères sont des anagrammes strictes l'une de l'autre, en tenant compte uniquement des lettres.
polyglotteIntermédiaire#chaines#anagramme25 minmai 2026 - MoyenChaînes
Valider une heure HH:MM au format 24h sans regex
Lire une chaîne et déterminer si elle représente une heure valide au format HH:MM en horaire 24h, sans utiliser d'expressions régulières.
polyglotteIntermédiaire#chaines#validation30 minmai 2026 - FacileArithmétique
Calculer la valeur absolue d'un entier
Lire un entier et afficher sa valeur absolue, sans utiliser de fonction abs() native.
polyglotteDébutant#arithmetique#conditions5 minmai 2026 - MoyenListes
Union et intersection de deux listes triées
À partir de deux listes d'entiers triées par ordre croissant, calculer et afficher leur union et leur intersection, également triées.
polyglotteIntermédiaire#listes#ensembles35 minmai 2026 - FacileTypes
Type union "rouge" | "vert" | "orange"
Définir un type union littéral pour les couleurs d'un feu tricolore et implémenter une fonction qui fait défiler les états dans le bon ordre.
typescriptDébutant#typescript#unions10 minmai 2026 - MoyenTypes
Result<T, E> en union discriminée
Définir un type Result générique avec union discriminée, implémenter une fonction division qui retourne Result<number, string>, et utiliser le narrowing typé pour traiter les deux cas.
typescriptIntermédiaire#typescript#result30 minmai 2026 - MoyenTypes
readonly vs Array<T> mutable
Écrire une fonction qui accepte un tableau en lecture seule et retourne une copie triée, en montrant que toute tentative de mutation de l'argument est rejetée par le compilateur.
typescriptIntermédiaire#typescript#readonly25 minmai 2026 - FacileTypes
Interface Utilisateur avec champs optionnels
Définir une interface TypeScript avec des champs obligatoires et optionnels, puis écrire une fonction de formatage qui gère l'absence de champ.
typescriptDébutant#typescript#interfaces15 minmai 2026 - MoyenArithmétique
Tester la primalité d'un entier jusqu'à 10⁶
Lire un entier et déterminer s'il est premier, en utilisant un algorithme efficace adapté à la plage 1 à 10⁶.
polyglotteIntermédiaire#arithmetique#primes25 minmai 2026 - FacileConditions
Tester si un entier est pair ou impair
Lire un entier et afficher `pair` s'il est divisible par 2, `impair` sinon.
polyglotteDébutant#conditions#parite5 minmai 2026 - FacileChaînes
Tester si une chaîne ASCII est un palindrome
Lire une chaîne ASCII sur l'entrée standard et afficher `oui` si elle se lit de la même façon dans les deux sens, `non` sinon.
polyglotteDébutant#chaines#palindrome15 minmai 2026 - FacileConditions
Déterminer si une année est bissextile
Lire une année et afficher `bissextile` si elle l'est, `non bissextile` sinon, en appliquant les règles du calendrier grégorien.
polyglotteDébutant#conditions#calendrier15 minmai 2026 - FacileBoucles
Afficher la table de multiplication par 7
Afficher les 10 premières lignes de la table de multiplication par 7, sous la forme `7 x N = R`, de N = 1 à N = 10.
polyglotteDébutant#boucles#multiplication10 minmai 2026 - MoyenListes
Min, max et moyenne d'une liste d'entiers
Lire une liste d'entiers et afficher son minimum, son maximum et sa moyenne arithmétique arrondie à deux décimales.
polyglotteIntermédiaire#listes#statistiques25 minmai 2026 - FacileRequêtes
Lister les villes distinctes d'une table clients
Écrire une requête SQL qui retourne toutes les villes présentes dans la table clients, sans doublons, triées alphabétiquement.
sqlDébutant#sql#distinct10 minmai 2026 - DifficileRequêtes
Top 3 produits par catégorie avec fonction de fenêtre
Écrire une requête SQL qui retourne les 3 produits les plus chers de chaque catégorie en utilisant ROW_NUMBER() OVER (PARTITION BY categorie ORDER BY prix DESC).
sqlAvancé#sql#fenetres45 minmai 2026 - MoyenRequêtes
Jointure commandes ⋈ clients
Écrire une requête SQL qui joint la table commandes avec la table clients pour retourner, pour chaque client, son nom et le total cumulé de toutes ses commandes.
sqlIntermédiaire#sql#jointures25 minmai 2026 - FacileArithmétique
Somme des entiers de 1 à 50
Calculer et afficher la somme de tous les entiers de 1 à 50 inclus.
polyglotteDébutant#arithmetique#somme10 minmai 2026 - MoyenArithmétique
Somme des diviseurs propres d'un entier
Lire un entier N et afficher la somme de ses diviseurs propres, c'est-à-dire tous les diviseurs positifs de N strictement inférieurs à N.
polyglotteIntermédiaire#arithmetique#diviseurs25 minmai 2026 - FacileArithmétique
Somme des chiffres décimaux d'un entier
Lire un entier positif et afficher la somme de ses chiffres décimaux individuels.
polyglotteDébutant#arithmetique#chiffres15 minmai 2026 - FacileChaînes
Lire un prénom et afficher un salut
Lire un prénom sur l'entrée standard et afficher `Bonjour, <prénom> !` sur la sortie standard.
polyglotteDébutant#chaines#entree5 minmai 2026 - 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 - DifficileTraits
impl Iterator pour un itérateur de Fibonacci
Définir la struct Fib et implémenter le trait Iterator<Item = u64> pour qu'elle produise la suite de Fibonacci terme par terme, utilisable avec .take(10).collect().
rustAvancé#rust#iterateurs45 minmai 2026 - MoyenTraits
impl Display pour une struct Point
Définir la struct Point { x: i32, y: i32 } et implémenter std::fmt::Display pour qu'elle s'affiche sous la forme (x, y) avec println!.
rustIntermédiaire#rust#traits25 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 - DifficileRecherche
Résoudre un Sudoku 4×4 par backtracking
Implémenter un solveur de Sudoku 4×4 par backtracking : remplir les cases vides de façon à ce que chaque ligne, colonne et bloc 2×2 contienne les chiffres 1 à 4.
polyglotteAvancé#recherche#backtracking75 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 - FacileArithmétique
Extraire le premier chiffre d'un entier positif
Lire un entier positif et afficher son chiffre le plus significatif (le chiffre de gauche dans sa représentation décimale).
polyglotteDébutant#arithmetique#chiffres10 minmai 2026 - FacileArithmétique
Calculer X% d'une valeur Y
Lire un pourcentage X et une valeur Y sur l'entrée standard, puis afficher X% de Y arrondi à deux décimales.
polyglotteDébutant#arithmetique#pourcentage10 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.