Le projet de banque d'exercices en est a ses débuts. Le but est pour l'instant d'avoir de la matière afin de créer quelque chose d'utilisable.
Les étapes du projet sont les suivantes :
- Récupérer les énoncés des exercices
- Leur attribuer des tests
- Étudier le mode de distribution
- Mettre en place le mode de distribution
Pour l'instant, voilà une liste de chose à faire !
- L'import d'exercice
- Le retravaille d'exercice
- Les testes unitaires
- [Défi #1 : Chimie pour tous] : un petit parseur pour calculer la masse molaire d'un groupe d'atomes.
- [Défi #2 : le jeu de la vie] : à l'aide d'une bibliothèque graphique, faire un petit jeu de la vie.
- [Défi #4 : faisons une vraie calculette] : faire un petit parseur permettant d'évaluer une expression arithmétique, avec possibilité d'ajouter les variables, les fonctions, voire faire un vrai petit langage.
- [Défi #5 : un chronomètre] : comme son nom l'indique, faire un bête chronomètre.
- [Défi #8 : tout en base 64] : Base64 est un codage permet de représenter une suite de bit quelconque avec seulement 65 caractères, le but est donc de l'implémenter.
- [Défi #9 : la recherche en génétique] : coder un programme capable de retrouver une sous-chaîne dans un texte.
- [Défi #12 : zdessin] : créer son propre format de .bmp avec une petite bibliothèque pour le manipuler.
- zReader : manipuler les fichiers.
- zTri : récupération des secondes système, comparatif de tris.
- zStrcapitalize : recoder la fonction strcapitalize.
- zAddition : pure algorithmique, matrices.
- zGame : résoudre des multiplications le plus vite possible.
- zStrstat : chaînes de caractères.
- zStrsearch : chaînes de caractères.
- zGrep : récupération des paramètres du main, algo sur les chaînes, manipulation de fichier, analyse séquentielle.
- zSommeChiffres : Calculer la somme des chiffres d'un nombre donné. Compter le nombre de fois où une somme est présente dans un intervalle donné.
- zLCD : simulation d'un afficheur 7 segments.
- zCoupure : jouer au banquier.
- zJustificator : justification de texte.
- zTransforme : manipulations basiques de tableaux.
- zChance : manipulation du temps et/ou pratique algorithmique.
- zConvert : conversion entier -> chaîne de caractères.
- zSpirale : boucles, manipulation de tableaux à 2 dimensions et allocation dynamique.
- zConjug : manipulation de chaînes de caractères.
- Cosway : recodons la vache GNU/Linux la plus célèbre !
- Compression RLE : implémentons l'algorithme pour des fichiers textes.
- Interpréteur BrainFuck : tout est dans le titre.
- Des chiffres… : tiré du jeu télévisé Des chiffres et des lettres.
- …et des lettres : même chose que le précédent, mais avec les lettres.
- Fractions : créer un type Fraction pour les manipuler plus facilement.
- Chiffres romains : conversion de et vers les chiffres romains.
- Polynômes : évaluation de polynômes.
- [Atelier] P'tit langage : créer un petit langage de programmation.
- Diff : recoder l'outil de diff de deux fichiers.
- Figlet ! : recoder le programme GNU/Linux pour afficher de l'ASCII Art.
- Triangle de Pascal : tout est dans le titre.
- Interpréteur Befunge : un autre langage ésotérique.
- Football sur papier : un jeu original qui vaut le détours.
- Puissance 4 : tout est dans le titre.
- Démineur : le célèbre jeu explosif !
- Bataille navale : tout est dans le titre.
- Pharmacie : gérer une pharmacie.
- Règle de Golomb : lire la description.
- Monnaie syldave : énigme posée au Championnat International de jeux mathématiques en 2000.
- Poker : un jeu de poker quoi.
- Connexité et comptage d'objets : lire la description.
- Trouver les VIP : où l'on manipule des graphes.
- Trouver les dix plus grands nombres : sans utiliser sort.
- Chaînes de mots : transformation pour aller d'un mot à un autre.
- Factorielle et analogues : l'énoncé est peu lisible avec les balises maths toutes pétées.
- Tetris : tout est dans le titre.
- Anagrammes : génération d'anagrammes.
- [Défi #11 : zprintf] : recoder la fonction la plus célèbre du C !
- zArray1D : pratique des tableaux à une dimension.
- zIdentificator : vérifier si un identificateur respecte les règles du C. Peut être potentiellement étendu à plusieurs langages, mais alors il faut expliquer les règles de chaque langage.
- zPointeurs : manipulations de pointeurs.
- getline
- Opérateur virgule : exercice un peu inutile depuis C++11 et les initializer lists.
- Le Site du Zéro : un exercice de polymorphisme coincé avant 2013.
- Les ruptures : pour travailler les boucles et les flux d'exécution.
- Mise en cache de fonctions : ne pas recalculer la valeur d'une fonction déjà appelée.
- Traçage de l'application : afficher tout ce qui se passe lors de l'appel d'une fonction.
- zMath, Notation polonaise, Parseur de fonctions mathématiques et [Défi #4 : faisons une vraie calculette] peuvent être réunis en un seul exercice (notation polonaise puis notation classique).
- [Défi #10 : le mini-moteur SQL] et Biblio++ peuvent être réunis en un seul.
- En lettres ! et z0zéro peuvent être réunis en un seul.
- Tic-tac-toe, zMorp - 1ère partie, zMorp - 2ème partie et zMorp - SDL peuvent être réunis en un seul, avec la bibliothèque graphique au choix.
- zBigInt et Le plus grand nombre peuvent être réunis en un seul exercice.
- Statistiques sur des fichiers et zWordCount sont assez similaires, on peut fusionner je pense.
- CRYPTO 1 : Le chiffre de César, CRYPTO 2 : Le chiffre de Vigenère, CRYPTO 3 : Cryptage XOR et zCrypt peuvent être fusionnés.
C'est à dire qu'il faut les retravailler de manière à ce qu'ils ne dépendent pas du langage d'origine.
Ces exercices sont pour l'instant en Python :
- Anagramme
- Cache
- Chemin-dico
- Connexité
- Dix-plus-grand
- Éxecution
- Factoriel
- Monnaie-syldave
- Pharmacie
- Poker
- Polonaise
- Regle_de_golomb
- Tetris
- VIP
Ces exercices sont pour l'instant en C :
- zAddition
- zBinary
- zDownload
- zIdentificator (Cet exercice est spécial à transcrire)
- zMath
- zParser
- zReader
- zStrstat
- zStrstr
- zTri
Les exercices ci-dessus sont retravaillés mais il reste l'écriture des tests unitaires en C, C++ et Python au moins.
- zCorrecteur
- zDragon
- zMotscroises
- zSudoku (Python c'est fait, il reste C et C++)
Vous êtes invité à modifier directement ce fichier sinon, je le ferrais 😉