Une fois que tu as implémenté l'exercice hello-world, la tâche suivante consiste à implémenter 20 autres exercices ou plus.
Il existe deux types d'exercices que tu peux implémenter :
En général, on recommande aux nouveaux parcours de commencer par implémenter des exercices d'entraînement, car ils sont plus simples à mettre en place et demandent moins de réflexion en amont. Les exercices d'apprentissage peuvent toujours être ajoutés plus tard, une fois que ton parcours fonctionne correctement.
Pour aider les parcours à implémenter des exercices d'entraînement, on a créé le dépôt exercism/problem-specifications. Ce dépôt contient les métadonnées de plus de 100 exercices d'entraînement, que les différents parcours peuvent ensuite utiliser pour implémenter leur propre version de ces exercices. C'est pourquoi tu verras les mêmes exercices implémentés dans de nombreux parcours différents.
Alors, comment sélectionner les 20 ou plus dans cette liste de plus de 100 exercices ? Voici quelques recommandations.
Les concepts utilisés dans ces plus de 100 exercices sont très variés. Cherche à implémenter des exercices qui amènent les apprenants à travailler une grande variété de concepts. Ainsi, plutôt que d'implémenter 20 exercices qui portent tous sur les strings, essaie d'implémenter des exercices qui portent sur des concepts différents.
Voici quelques concepts avec des exemples d'exercices :
| Concepts | Exercices |
|---|---|
| Manipulation de bits | allergies, secret-handshake |
| Booléens | leap |
| Classes | circular-buffer, robot-name |
| Concurrence | bank-account |
| Conditions | raindrops |
| Dates et heures | gigasecond, meetup |
| Égalité | clock |
| Nombres à virgule flottante | darts, space-age |
| Évaluation paresseuse | alphametics, zebra-puzzle |
| Listes | resistor-color, spiral-matrix |
| Boucles | collatz-conjecture, protein-translation |
| Dictionnaires | nucleotide-count |
| Nombres | leap, grains |
| Aléatoire | dnd-character, robot-name |
| Strings | bob, isogram, |
| Arbres | binary-search-tree, pov |
Certains exercices seront plus difficiles à implémenter que d'autres. Cherche à implémenter des exercices de difficulté variée : quelques-uns faciles, quelques-uns intermédiaires et quelques-uns difficiles.
La difficulté d'un exercice dépend de plusieurs facteurs, comme les concepts mobilisés et le langage de ton parcours. Il peut être utile de regarder à quoi ressemble l'exercice dans d'autres parcours qui l'ont implémenté, pour mieux te faire une idée de ce à quoi l'implémentation pourrait ressembler.
Voici quelques exemples de difficultés d'exercices :
| Difficulté | Exercices |
|---|---|
| Facile | darts, gigasecond, isogram, leap, resistor-color, space-age |
| Intermédiaire | allergies, bob, meetup, protein-translation, raindrops, secret-handshake |
| Difficile | alphametics, forth, react, pov, zebra-puzzle, zipper |
Tous les exercices ne conviendront pas à ton parcours. Ne sélectionne que les exercices qui lui correspondent ; mieux vaut ne pas implémenter un exercice que d'en implémenter un qui n'a pas de sens. Par exemple, l'exercice lens-person amène l'apprenant à travailler avec des lenses, que beaucoup de langages ne prennent pas en charge.
Si tu trouves un exercice qui ne correspond pas à ton parcours, tu peux ajouter son slug au tableau exercises.foregone du fichier config.json du parcours.
Cela garantit que l'outillage ignorera cet exercice.
Pour rendre tout cela un peu plus concret, voici à quoi pourrait ressembler une sélection d'exercices initiaux :
| Exercice | Difficulté | Concepts |
|---|---|---|
| hello-world | Facile | Aucun (exercice initial) |
| leap | Facile | Nombres, Booléens |
| gigasecond | Facile | Dates et heures |
| isogram | Facile | Strings |
| resistor-color | Facile | Listes |
| nucleotide-count | Facile | Dictionnaires |
| collatz-conjecture | Facile | Boucles |
| darts | Facile | Nombres à virgule flottante |
| two-fer | Facile | Formatage de chaînes, Arguments optionnels |
| high-scores | Facile | Traitement de collections |
| raindrops | Intermédiaire | Conditions |
| bob | Intermédiaire | Strings |
| allergies | Intermédiaire | Manipulation de bits |
| series | Intermédiaire | Exceptions |
| circular-buffer | Intermédiaire | Classes |
| meetup | Intermédiaire | Dates et heures |
| yacht | Intermédiaire | Listes |
| dominoes | Difficile | Tuples, Évaluation paresseuse |
| diamond | Difficile | Formatage de chaînes |
| alphametics | Difficile | Évaluation paresseuse |
| forth | Difficile | Analyse syntaxique |
Une fois que tu as sélectionné les exercices que tu veux inclure dans ton parcours, l'étape suivante consiste à les implémenter. La documentation sur l'ajout d'un exercice d'entraînement explique en détail comment ajouter un exercice d'entraînement.