Una vez que hayas implementado el ejercicio hello-world, la siguiente tarea es implementar otros 20 ejercicios o más.
Puedes implementar dos tipos de ejercicios:
En general, recomendamos que los tracks nuevos empiecen por implementar ejercicios de práctica, ya que son más fáciles de implementar y requieren menos trabajo de planificación por adelantado. Siempre puedes agregar ejercicios de concepto más adelante, cuando tu track ya esté funcionando bien.
Para ayudar a los tracks a implementar ejercicios de práctica, creamos el repositorio exercism/problem-specifications. Este repositorio contiene metadatos de más de 100 ejercicios de práctica, que los distintos tracks pueden usar para implementar su propia versión de estos ejercicios. Por eso verás los mismos ejercicios implementados en muchos tracks diferentes.
Entonces, ¿cómo eliges los más de 20 de esta lista de más de 100 ejercicios? Aquí tienes algunas recomendaciones.
Hay mucha variedad en los conceptos que se usan en los más de 100 ejercicios. Procura implementar ejercicios que hagan que los estudiantes practiquen una gran variedad de conceptos. Así que, en lugar de implementar 20 ejercicios centrados en strings, intenta implementar ejercicios centrados en conceptos distintos.
Aquí tienes algunos conceptos con ejercicios de ejemplo:
| Conceptos | Ejercicios |
|---|---|
| Manipulación de bits | allergies, secret-handshake |
| Booleans | leap |
| Clases | circular-buffer, robot-name |
| Concurrencia | bank-account |
| Condicionales | raindrops |
| Fechas y tiempo | gigasecond, meetup |
| Igualdad | clock |
| Números de punto flotante | darts, space-age |
| Evaluación perezosa | alphametics, zebra-puzzle |
| Arrays | resistor-color, spiral-matrix |
| Bucles | collatz-conjecture, protein-translation |
| Mapas | nucleotide-count |
| Números | leap, grains |
| Aleatoriedad | dnd-character, robot-name |
| Strings | bob, isogram, |
| Árboles | binary-search-tree, pov |
Algunos ejercicios son más difíciles de implementar que otros. Procura implementar ejercicios con distintos grados de dificultad: algunos fáciles, otros intermedios y otros difíciles.
Qué tan difícil es un ejercicio depende de varios factores, como los conceptos que involucra y el lenguaje del track. Puede ayudarte ver cómo se ve el ejercicio en otros tracks que ya lo implementaron, para hacerte mejor una idea de cómo podría ser la implementación.
Aquí tienes algunos ejercicios agrupados por dificultad:
| Dificultad | Ejercicios |
|---|---|
| Fácil | darts, gigasecond, isogram, leap, resistor-color, space-age |
| Intermedio | allergies, bob, meetup, protein-translation, raindrops, secret-handshake |
| Difícil | alphametics, forth, react, pov, zebra-puzzle, zipper |
No todos los ejercicios encajan con tu track. Elige solo los ejercicios que encajen con tu track; es mejor no implementar un ejercicio que implementar uno que no tiene sentido. Por ejemplo, en el ejercicio lens-person el estudiante trabaja con lentes, algo que muchos lenguajes no admiten.
Si encuentras un ejercicio que no encaja con tu track, puedes agregar su slug al array exercises.foregone en el archivo config.json del track.
Así te aseguras de que las herramientas ignoren ese ejercicio.
Para que todo esto sea un poco más concreto, así podría verse una selección de ejemplo de ejercicios iniciales:
| Ejercicio | Dificultad | Conceptos |
|---|---|---|
| hello-world | Fácil | Ninguno (ejercicio inicial) |
| leap | Fácil | Números, Booleans |
| gigasecond | Fácil | Fechas y tiempo |
| isogram | Fácil | Strings |
| resistor-color | Fácil | Arrays |
| nucleotide-count | Fácil | Mapas |
| collatz-conjecture | Fácil | Bucles |
| darts | Fácil | Números de punto flotante |
| two-fer | Fácil | Formato de strings, Argumentos opcionales |
| high-scores | Fácil | Procesamiento de colecciones |
| raindrops | Intermedio | Condicionales |
| bob | Intermedio | Strings |
| allergies | Intermedio | Manipulación de bits |
| series | Intermedio | Excepciones |
| circular-buffer | Intermedio | Clases |
| meetup | Intermedio | Fechas y tiempo |
| yacht | Intermedio | Arrays |
| dominoes | Difícil | Tuplas, Evaluación perezosa |
| diamond | Difícil | Formato de strings |
| alphametics | Difícil | Evaluación perezosa |
| forth | Difícil | Análisis sintáctico |
Una vez que hayas elegido los ejercicios que quieres incluir en tu track, el siguiente paso es implementarlos. La documentación para agregar un ejercicio de práctica tiene instrucciones detalladas sobre cómo agregar un ejercicio de práctica.