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
- MoyenArbres
Dessiner un arbre binaire complet de profondeur N en ASCII
Lire un entier N et afficher la représentation ASCII d'un arbre binaire parfait de profondeur N, avec les nœuds numérotés en ordre BFS.
polyglotteIntermédiaire#arbres#ascii40 minmai 2026 - FacileArithmétique
Extraire le dernier chiffre d'un entier positif
Lire un entier positif et afficher son dernier chiffre (le chiffre des unités) en utilisant l'opérateur modulo.
polyglotteDébutant#arithmetique#modulo5 minmai 2026 - MoyenLayout
Layout 3 colonnes responsive avec Flexbox
Créer un conteneur avec trois enfants occupant chacun un tiers de la largeur sur écrans larges (≥ 768 px) et se réorganisant en colonne unique sur mobile. HTML et CSS uniquement.
htmlIntermédiaire#css#flexbox30 minmai 2026 - FacileArithmétique
Convertir N secondes en HH:MM:SS
Lire un nombre entier de secondes et afficher la durée correspondante au format HH:MM:SS, avec zéros de remplissage.
polyglotteDébutant#arithmetique#formatage15 minmai 2026 - FacileArithmétique
Convertir N minutes en HhMM
Lire un nombre entier de minutes et afficher la durée correspondante au format `XhYY` où X est le nombre d'heures et YY les minutes restantes avec zéro de remplissage.
polyglotteDébutant#arithmetique#formatage10 minmai 2026 - FacileArithmétique
Convertir des degrés Fahrenheit en Celsius
Lire une température en Fahrenheit et afficher la valeur convertie en Celsius, arrondie à deux décimales.
polyglotteDébutant#arithmetique#conversion10 minmai 2026 - MoyenChaînes
Convertir entre chiffres romains et arabes
Lire soit un entier arabe (1 à 3999), soit un nombre romain, et afficher sa représentation dans l'autre système.
polyglotteIntermédiaire#chaines#romains45 minmai 2026 - DifficileArithmétique
Convertir un entier entre deux bases quelconques (2 à 36)
Implémenter la conversion d'un entier positif d'une base source vers une base cible, en utilisant les chiffres 0-9 puis les lettres a-z pour les valeurs 10 à 35.
polyglotteAvancé#arithmetique#bases60 minmai 2026 - FacileChaînes
Lire deux chaînes et les concaténer
Lire deux chaînes de caractères sur des lignes distinctes et afficher leur concaténation directe, sans séparateur.
polyglotteDébutant#chaines#entree5 minmai 2026 - MoyenChaînes
Compter les occurrences d'un mot dans un texte
Lire un mot cible et un texte multi-lignes, puis afficher le nombre de fois que le mot apparaît dans le texte, sans tenir compte de la casse.
polyglotteIntermédiaire#chaines#comptage25 minmai 2026 - FacileChaînes
Compter les occurrences d'un caractère donné
Lire une chaîne puis un caractère sur l'entrée standard et afficher le nombre de fois que ce caractère apparaît dans la chaîne.
polyglotteDébutant#chaines#comptage15 minmai 2026 - MoyenTexte
Compter les lignes non vides sur l'entrée standard
Lire l'entrée standard jusqu'à EOF et afficher le nombre de lignes qui contiennent au moins un caractère non-espace.
polyglotteIntermédiaire#texte#entree20 minmai 2026 - FacileChaînes
Compter les voyelles d'une phrase
Lire une phrase sur l'entrée standard et afficher le nombre de voyelles (a, e, i, o, u) qu'elle contient, sans tenir compte de la casse.
polyglotteDébutant#chaines#comptage15 minmai 2026 - FacileChaînes
Compter les mots d'une phrase
Lire une phrase sur l'entrée standard et afficher le nombre de mots qu'elle contient, en séparant les mots par les espaces.
polyglotteDébutant#chaines#comptage15 minmai 2026 - FacileBoucles
Imprimer les entiers de 1 à N
Lire un entier N sur l'entrée standard et afficher tous les entiers de 1 à N inclus, un par ligne.
polyglotteDébutant#boucles#entree10 minmai 2026 - FacileBoucles
Imprimer une décrémentation de 10 à 1
Afficher les entiers de 10 à 1 dans l'ordre décroissant, un par ligne, sans entrée utilisateur.
polyglotteDébutant#boucles#decrement5 minmai 2026 - MoyenChaînes
Compression simple par répétition (RLE)
Encoder et décoder une chaîne de caractères par Run-Length Encoding : remplacer chaque séquence de caractères identiques consécutifs par le caractère suivi de son nombre de répétitions.
polyglotteIntermédiaire#chaines#compression35 minmai 2026 - DifficileCompression
Compresser et décompresser un texte par codes de longueur variable
Implémenter un algorithme de codage de Huffman : construire l'arbre à partir des fréquences des caractères, encoder le texte en une suite de bits, puis décoder cette suite.
polyglotteAvancé#compression#codes90 minmai 2026 - FacileBoucles
Imprimer les carrés des entiers de 1 à 10
Afficher pour chaque entier de 1 à 10 son carré, sous la forme `N^2 = R`, un résultat par ligne.
polyglotteDébutant#boucles#carres10 minmai 2026 - DifficileSystème
Shell minimal pwd, cd, ls, exit
Écrire un mini-shell C interactif qui lit des commandes sur stdin et implémente pwd, cd, ls et exit en utilisant uniquement les appels POSIX getcwd, chdir, opendir, readdir et closedir.
cAvancé#c#shell90 minmai 2026 - FacileChaînes
Implémenter ROT13 sur les lettres ASCII
Lire une ligne sur stdin et la réimprimer chiffrée en ROT13 : les lettres A-Z et a-z pivotent de 13 positions, tous les autres caractères restent inchangés.
cDébutant#c#chaines30 minmai 2026 - MoyenMémoire
Inverser un tableau d'int en place
Implémenter la fonction void inverser(int *t, size_t n) qui renverse un tableau d'entiers en place en utilisant deux indices convergents, sans tableau auxiliaire.
cIntermédiaire#c#tableaux25 minmai 2026 - MoyenMémoire
Allouer, copier, libérer une chaîne avec malloc
Lire une chaîne sur stdin, la dupliquer dans une zone allouée dynamiquement avec malloc et strncpy, l'afficher, puis libérer la mémoire sans fuite.
cIntermédiaire#c#malloc30 minmai 2026 - FacileI/O
Afficher argv[1] sur stdout
Écrire un programme C qui imprime le premier argument de la ligne de commande sur stdout, ou signale une erreur sur stderr si aucun argument n'est fourni.
cDébutant#c#argv15 minmai 2026 - FacileSystème
Renommer tous les fichiers en minuscules
Écrire un script bash qui renomme chaque fichier du répertoire courant en convertissant les majuscules de son nom en minuscules. Si la cible existe déjà, afficher un avertissement et ne pas écraser.
bashDébutant#bash#fichiers20 minmai 2026 - FacileI/O
Lire une ligne de stdin et l'afficher
Écrire un script bash qui lit une seule ligne sur l'entrée standard avec la commande `read` et l'imprime préfixée par "vous avez écrit : ".
bashDébutant#bash#stdin10 minmai 2026 - FacileSystème
Compter les fichiers .txt d'un dossier
Écrire un script bash qui affiche le nombre de fichiers .txt présents dans le répertoire courant (non récursif). Gérer correctement le cas où il n'y en a aucun.
bashDébutant#bash#fichiers15 minmai 2026 - MoyenSystème
Archiver les fichiers modifiés il y a plus de 7 jours
Écrire un script bash qui crée une archive vieux.tar.gz contenant tous les fichiers ordinaires du répertoire courant modifiés il y a plus de 7 jours, en ignorant les sous-dossiers.
bashIntermédiaire#bash#fichiers30 minmai 2026 - Facilefichiers
Téléchargement : consignes hors ligne
Exemple de défi avec fichier téléchargeable — utile pour préparer de futures archives zip sans changer le modèle.
markdownDébutant#telechargement#exemple10 minmars 2025
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.