Advent of Code

Eu adoro Dezembro. Natal, Ano-Novo, uma ou 2 semanas de ferias, a retrospectiva das conquistas do ano e … AdventOfCode. O AdventOfCode é um desafio anual de programação que consiste em quebra-cabeças que podem ser resolvidos em qualquer linguagem de programação. O evento é direcionado para pessoas com diferentes níveis de habilidade em programação e oferece uma oportunidade para aprimorarem nossas habilidades e aprender novas técnicas. Os desafios são lançados diariamente durante o mês de dezembro até o dia 25, no natal. Sempre há 2 problemas e para cada um resolvido você ganha uma estrela.

Vou ser honesto e dizer que até 2022 eu resolvia alguns desafios mas nunca fui consistente. Este ano eu decidi levar a sério e até o dia 8 eu coletei todas as 16 estrelas. E como disse acima, estou encarando como uma oportunidade de aprendizado: todo problema tem um exemplo com a solução, então cá estou fazendo TDD, o ciclo clássico red-green-refactor; todo dia você baixa um arquivo texto como input e resolve para cada uma das estrelas, então cá estou com um template automatizado em node que gera uma estrutura comum de arquivos e pastas; os problemas podem ser resolvidos de vários modos, então cá estou calculando o desempenho da minha solução e otimizando; estou publicando as minhas respostas dia-a-dia, então cá estou comentando o meu código para que minhas intenções sejam claras; como há um problema por dia, então cá estou encarando cada dia como uma versão, automatizei a geração de versões no Github usando release-please.

Minha estrategia cada dia tem sido a mais ingênua, tento resolver tudo por força-bruta. Quando demora muito, eu paro e penso em algo melhor. Se está aceitável (bem, aqui é bastante subjetivo, qualquer coisa rodando em menos de 3 minutos, ok), eu envio as respostas e ao fim do dia revisito o problema e reflito se há um modo melhor de fazer. Um exemplo, em um dia era necessario calcular caminhos usando um mapa com instruções. Minha primeira abordagem foi com um loop, depois de resolvido percebi que poderia usar o mínimo múltiplo comum dos diversos caminhos.

Vamos ver se consigo manter-me em dia com os problemas, tem sido muito divertido, eu recomendo fortemente!