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 implementando ejercicios de práctica, ya que son más fáciles de implementar y requieren menos reflexión previa. Siempre puedes añadir ejercicios de concepto más adelante, cuando tu track ya funcione correctamente.
Para ayudar a los tracks a implementar ejercicios de práctica, hemos creado 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 este motivo, verás los mismos ejercicios implementados en muchos tracks distintos.
Entonces, ¿cómo seleccionas esos 20 o más de una lista de más de 100 ejercicios? Aquí tienes algunas pautas.
Hay mucha variedad en los conceptos que se usan en los más de 100 ejercicios. Tu objetivo debería ser implementar ejercicios que hagan que los estudiantes practiquen una amplia variedad de conceptos. Así que, en lugar de implementar 20 ejercicios centrados en strings, intenta implementar ejercicios que se centren en conceptos distintos.
Aquí tienes algunos conceptos con ejercicios de ejemplo:
| Conceptos | Ejercicios |
|---|---|
| Manipulación de bits | allergies, secret-handshake |
| Boolean | leap |
| Clases | circular-buffer, robot-name |
| Concurrencia | bank-account |
| Condicionales | raindrops |
| Fechas y horas | gigasecond, meetup |
| Igualdad | clock |
| Números de coma 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 serán más difíciles de implementar que otros. Tu objetivo debería ser implementar ejercicios con distintos grados de dificultad: algunos fáciles, otros intermedios y otros difíciles.
La dificultad de un ejercicio depende de varios factores, como los conceptos implicados y el lenguaje del track. Puede ayudarte ver cómo es el ejercicio en otros tracks que ya lo hayan implementado, para hacerte mejor a la idea de cómo podría quedar la implementación.
Aquí tienes algunas dificultades con ejercicios:
| Dificultad | Ejercicios |
|---|---|
| Fácil | darts, gigasecond, isogram, leap, resistor-color, space-age |
| Intermedia | allergies, bob, meetup, protein-translation, raindrops, secret-handshake |
| Difícil | alphametics, forth, react, pov, zebra-puzzle, zipper |
No todos los ejercicios tienen por qué encajar con tu track. Selecciona únicamente los ejercicios que encajen con tu track; es mejor no implementar un ejercicio que implementar uno que no tenga sentido. Por ejemplo, el ejercicio lens-person hace que el estudiante trabaje con lentes, algo que muchos lenguajes no admiten.
Si encuentras un ejercicio que no encaje con tu track, puedes añadir su slug al array exercises.foregone del 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, esta es una posible selección de ejemplo de ejercicios iniciales:
| Ejercicio | Dificultad | Conceptos |
|---|---|---|
| hello-world | Fácil | Ninguno (ejercicio inicial) |
| leap | Fácil | Números, Boolean |
| gigasecond | Fácil | Fechas y horas |
| 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 coma flotante |
| two-fer | Fácil | Formato de strings, Argumentos opcionales |
| high-scores | Fácil | Procesamiento de colecciones |
| raindrops | Intermedia | Condicionales |
| bob | Intermedia | Strings |
| allergies | Intermedia | Manipulación de bits |
| series | Intermedia | Excepciones |
| circular-buffer | Intermedia | Clases |
| meetup | Intermedia | Fechas y horas |
| yacht | Intermedia | 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 seleccionado los ejercicios que quieres incluir en tu track, el siguiente paso es implementarlos. La documentación para añadir un ejercicio de práctica tiene instrucciones detalladas sobre cómo añadir un ejercicio de práctica.