Desafios para Hackathon E5R.
Para cada desafio, você deve tornar a síntaxe na classe Hackathon implementando a
classe HackathonChallenge.
A regra básica é: A classe Hackathon não deve ser alterada
Além da regra básica, cada desafio impõe suas próprias regras que também devem ser obedecidas.
classHackathonChallenge{/* TODO... */}Regras:
- Só faça funcionar!
classHackathon:HackathonChallenge{publicHackathon(){Feature("Somar")("Calcula a soma entre números inteiros,")("produzindo resultados matematicamente coerentes.");}}Regras:
- Os únicos operadores matemáticos permitidos são
+e-.
classHackathon:HackathonChallenge{publicHackathon(){// 2 + 2 = 4Assert(Soma(2,2)==4);// 4 - 2 = 2Assert(Subtrai(4,2)==2);// 5 * 2 = 10Assert(Multiplica(5,2)==10);// 12 / 3 = 4Assert(Divide(12,3)==4);boolerrouDivisao=false;// 10 / 0 = !{erro de divisão por zero}try{Divide(10,0);}catch(DivideByZeroException){errouDivisao=true;}Assert(errouDivisao);}}Imagine uma lista de itens qualquer:
IList<object>;Uma função que receba uma lista, um número de página atual, um número de registros por página, um limite máximo para exibição de páginas, deve:
- Calcular o número de páginas possíveis dentro da lista fornecida;
- Retornar uma lista de páginas onde a página atual esteja o maix próximo possível do centro da lista;
- Não exceder o limite máximo de páginas a exibir;
Expectativa
maximoPaginaExibicao = 5
totalPaginas = 10
paginaAtual = 5
1 2 3 4 5
+---------------+
1, 2, | 3, 4, 5, 6, 7 |, 8, 9, 10
|
*
maximoPaginaExibicao = 5
totalPaginas = 10
paginaAtual = 2
1 2 3 4 5
+---------------+
| 1, 2, 3, 4, 5 |, 6, 7, 8, 9, 10
|
*
maximoPaginaExibicao = 5
totalPaginas = 10
paginaAtual = 10
1 2 3 4 5
+----------------+
1, 2, 3, 4, 5 , | 6, 7, 8, 9, 10 |
|
*
Construa um executor de jobs tipo CRON
- Pense em um agendador de próximos passos
- Pense em um executor independente
- Pense em um sistema de log independente
- Pense em executar em containers
Construa um executável que seja capaz de ler um repositório git de um commit em diante e montar um Markdown de notas de lançamento.
- Pense em Conventional Commits
- Pense em agrupamento de commits por tipo de contribuição
- Pense em links
- Pense em mais detalhes
- Pense em alertas de breaking changes