Depois de implementar o exercício hello-world, a próxima tarefa é implementar mais de 20 outros exercícios.
Há dois tipos de exercício que você pode implementar:
Em geral, recomendamos que trilhas novas comecem implementando Exercícios de Prática, porque são mais fáceis de implementar e exigem menos reflexão de antemão. Os Exercícios de Conceito podem sempre ser adicionados depois, quando sua trilha já estiver funcionando bem.
Para ajudar as trilhas a implementar Exercícios de Prática, criamos o repositório exercism/problem-specifications. Esse repositório contém metadados de mais de 100 Exercícios de Prática, que as diferentes trilhas podem usar para implementar a versão desses exercícios específica da própria trilha. Por isso, você vai ver os mesmos exercícios implementados em muitas trilhas diferentes.
Então como escolher os mais de 20 desta lista de mais de 100 exercícios? Aqui vão algumas orientações.
Existe muita variedade nos conceitos usados nos mais de 100 exercícios. Procure implementar exercícios que façam os estudantes praticarem uma grande variedade de conceitos. Então, em vez de implementar 20 exercícios focados em strings, tente implementar exercícios focados em conceitos diferentes.
Aqui estão alguns conceitos com exercícios de exemplo:
| Conceitos | Exercícios |
|---|---|
| Manipulação de bits | allergies, secret-handshake |
| Booleans | leap |
| Classes | circular-buffer, robot-name |
| Concorrência | bank-account |
| Condicionais | raindrops |
| Datas e horas | gigasecond, meetup |
| Igualdade | clock |
| Números de ponto flutuante | darts, space-age |
| Avaliação preguiçosa | alphametics, zebra-puzzle |
| Listas | resistor-color, spiral-matrix |
| Laços | collatz-conjecture, protein-translation |
| Mapas | nucleotide-count |
| Números | leap, grains |
| Aleatoriedade | dnd-character, robot-name |
| Strings | bob, isogram, |
| Árvores | binary-search-tree, pov |
Alguns exercícios serão mais difíceis de implementar do que outros. Procure implementar exercícios com diferentes graus de dificuldade: alguns fáceis, alguns intermediários e alguns difíceis.
O quão difícil um exercício é depende de vários fatores, como os conceitos envolvidos e a linguagem da trilha. Pode ajudar ver como o exercício aparece em outras trilhas que já o implementaram, para ter uma ideia melhor de como a implementação poderia ficar.
Aqui estão alguns exercícios com seus níveis de dificuldade:
| Dificuldade | Exercícios |
|---|---|
| Fácil | darts, gigasecond, isogram, leap, resistor-color, space-age |
| Intermediário | allergies, bob, meetup, protein-translation, raindrops, secret-handshake |
| Difícil | alphametics, forth, react, pov, zebra-puzzle, zipper |
Nem todos os exercícios vão combinar com a sua trilha. Escolha apenas os exercícios que combinam com a sua trilha; é melhor não implementar um exercício do que implementar um que não faz sentido. Por exemplo, o exercício lens-person faz o estudante trabalhar com lentes, que muitas linguagens não suportam.
Se você encontrar um exercício que não combina com a sua trilha, pode adicionar o slug dele ao array exercises.foregone no arquivo track config.json.
Assim, as ferramentas vão ignorar esse exercício.
Para deixar tudo isso um pouco mais concreto, veja como poderia ser uma seleção de exemplo de exercícios iniciais:
| Exercício | Dificuldade | Conceitos |
|---|---|---|
| hello-world | Fácil | Nenhum (exercício inicial) |
| leap | Fácil | Números, Booleans |
| gigasecond | Fácil | Datas e horas |
| isogram | Fácil | Strings |
| resistor-color | Fácil | Listas |
| nucleotide-count | Fácil | Mapas |
| collatz-conjecture | Fácil | Laços |
| darts | Fácil | Números de ponto flutuante |
| two-fer | Fácil | Formatação de strings, Argumentos opcionais |
| high-scores | Fácil | Processamento de coleções |
| raindrops | Intermediário | Condicionais |
| bob | Intermediário | Strings |
| allergies | Intermediário | Manipulação de bits |
| series | Intermediário | Exceções |
| circular-buffer | Intermediário | Classes |
| meetup | Intermediário | Datas e horas |
| yacht | Intermediário | Listas |
| dominoes | Difícil | Tuplas, Avaliação preguiçosa |
| diamond | Difícil | Formatação de strings |
| alphametics | Difícil | Avaliação preguiçosa |
| forth | Difícil | Análise sintática |
Depois de escolher os exercícios que você quer incluir na sua trilha, o próximo passo é implementá-los. A documentação de Adicionar Exercício de Prática tem instruções detalhadas sobre como adicionar um Exercício de Prática.