- Advent of Code é um calendário do advento de quebra-cabeças de programação para programadores de vários níveis, com soluções possíveis em qualquer linguagem
- Os participantes podem usá-lo para diversos fins, como preparação para entrevistas, treinamento corporativo, tarefas universitárias, exercícios práticos e competições de velocidade
- É possível participar sem formação em ciência da computação, e os problemas são feitos para rodar em menos de 15 segundos até mesmo em computadores de 10 anos atrás
- O site oferece suporte a autenticação OAuth, modo de alto contraste, leaderboards privados e seleção de blocos de código
- O leaderboard global foi descontinuado por causa de estresse e problemas de trapaça, e a ênfase está em uma experiência divertida de resolução de problemas centrada nos participantes
Visão geral do Advent of Code
- Advent of Code é um evento anual de quebra-cabeças de programação criado por Eric Wastl, que oferece problemas no formato de calendário do advento online a partir de 1º de dezembro de cada ano
- Os participantes resolvem um novo problema por dia, sem restrições de linguagem
- Os problemas podem ser usados para preparação para entrevistas, ensino, prática, competição e desafios entre pessoas
- Não é necessário ter formação em ciência da computação para participar; conhecimentos básicos de programação e resolução de problemas já são suficientes
- Todos os problemas podem ser concluídos em menos de 15 segundos mesmo em hardware de 10 anos atrás
Como participar e apoiar
- Para apoiar o Advent of Code, é possível compartilhar no Bluesky, Twitter, Mastodon ou contribuir diretamente via AoC++
- Se você travar ao resolver um problema, são recomendados métodos como verificar a entrada de exemplo, criar casos de teste, pedir ajuda a amigos ou pedir dicas no subreddit
Dicas gerais (General Tips)
- Se a entrada e a saída de exemplo não baterem, releia a descrição do problema e verifique o comportamento do código
- Se o exemplo passar mas a resposta ainda estiver errada, crie casos de teste que possam ser validados manualmente
- Se ainda estiver difícil resolver, você pode fazer uma pausa e tentar de novo depois ou perguntar à comunidade
Perguntas frequentes (FAQ)
- Seleção de blocos de código: com JavaScript ativado, é possível selecionar tudo com clique triplo
- Forma de autenticação: usa OAuth para login por serviços externos como Reddit e GitHub, e as credenciais são enviadas apenas para esses serviços
- O Advent of Code armazena apenas ID, nome, URL e imagem do usuário
- Mudança de dificuldade: os problemas ficam gradualmente mais difíceis ao longo do evento, e a dificuldade percebida varia conforme o nível técnico de cada pessoa
- Horário de publicação dos quebra-cabeças: são publicados à meia-noite do horário padrão do leste dos EUA (UTC-5), porque esse é o fuso que o mantenedor consegue administrar
- Para quem quiser competir, é possível disputar regionalmente por meio de leaderboards privados
- Problemas de legibilidade: há suporte a modo de alto contraste, que pode ser ativado por padrão no Firefox
- Proibição de sugestões de quebra-cabeças: por questões de direitos autorais, ideias externas para problemas não são aceitas
- Relato de bugs: se já passou mais de 1 hora desde a publicação do problema, muitos usuários provavelmente já o resolveram, então a chance de ser bug é baixa
- Em caso de problema, recomenda-se verificar primeiro no subreddit
- Competição por velocidade: se quiser resolver mais rápido, será preciso mais prática e técnica, mas o mais importante é participar do jeito que faça sentido para o seu objetivo
- Mudança no número de dias do evento: após manter o cronograma por 10 anos, ele passou a terminar no meio do mês para reduzir a carga de tempo do mantenedor
- Fim do leaderboard global: foi encerrado após 10 anos por causa de competição excessiva e problemas como ataques DDoS e estresse dos usuários
- Em vez disso, foi oferecido um recurso de compartilhamento de leaderboard privado somente para leitura
- Uso de IA: como os quebra-cabeças têm como objetivo melhorar o raciocínio humano, o uso de IA não é recomendado
- Isso é explicado com a analogia de que “mandar outra coisa se exercitar no seu lugar não te deixa mais forte”
- Proibição de copiar conteúdo: o Advent of Code pode ser usado gratuitamente, mas é proibido copiar o texto dos quebra-cabeças ou os dados de entrada
- Também é proibido imitar o design do site ou o nome
Créditos (Credits)
- Quebra-cabeças, código e design: Eric Wastl
- Beta testing: Ben Lucek, JP Burke, Aneurysm9, Andrew Skalski
- Gerentes de comunidade: Danielle Lucek, Aneurysm9
- Participantes: todos os usuários
Aviso legal (Legal)
- Advent of Code é uma marca registrada nos Estados Unidos, e o design, a linguagem, o estilo e o conceito são ativos exclusivos
- Não podem ser copiados nem usados sem consentimento explícito por escrito
- É livre fazer links ou citações dos quebra-cabeças, inclusive em contextos comerciais
- O Advent of Code não reivindica direitos autorais sobre o código de solução dos participantes
2 comentários
Eu participei um pouco no ano passado também... este ano realmente passou voando ;_;
Comentários do Hacker News
Sempre que ouço dizerem que dá para participar mesmo sem formação em ciência da computação, sinto que isso pode acabar sendo decepcionante para programadores por hobby
Se “ir bastante longe” significar resolver 1 ou 2 problemas fáceis, tudo bem, mas passar disso não é simples
Advent of Code é o ponto alto de todo mês de dezembro
É uma pena que o leaderboard global tenha desaparecido, mas dá para entender. Também gosto de este ano ter só 12 dias, porque reduz a pressão
Recomendo não tentar “vencer”, e sim simplesmente curtir a diversão de resolver problemas
Eu realmente amo Advent of Code
Na verdade fiquei feliz por este ano ter só 12 dias. No fim do ano sempre há muitos compromissos na vida real, e no ano passado só consegui fazer mais ou menos a metade
Meus grandes agradecimentos a todos os envolvidos
Foi a primeira vez que fiz Advent of Code este ano, e foi realmente divertido
É parecido com Project Euler, mas mais focado em programação do que em matemática
A parte 1 é simples, mas a parte 2 fica interessante porque exige uma abordagem otimizada
Faz sentido ter removido o leaderboard público
Mesmo deixando os LLMs de lado, competir era impossível fora de um certo fuso horário dos EUA
Em vez disso, seria legal ver estatísticas globais, como taxa de resolução por fuso horário
Também era divertido assistir a vídeos de programação ao vivo no YouTube
Eu espero Advent of Code todo ano
Sem me estressar com leaderboard, uso como oportunidade para aprender uma nova linguagem ou aprimorar habilidades
No dia a dia eu não costumo bootstrapar projetos do zero nem implementar DFS na mão, então esse tipo de evento é um ótimo treino
Por isso, no dia a dia equilibro com coisas como escrever testes e fazer documentação
Todo ano pratico melhorar um pouco os problemas antigos, aumentando a eficiência e a legibilidade
Fico feliz que Advent of Code esteja acontecendo de novo este ano
Lendo o FAQ, não entendi muito bem a regra de não divulgar os dados de entrada
Entendo o texto dos puzzles, mas é uma pena que até a entrada precise ficar privada. Ainda assim, como é algo gratuito, respeito a decisão
Enquete sobre linguagens: Python e C++ são as mais usadas, mas até entre as linguagens menos populares há algumas que combinam muito bem com AoC
A ideia é compartilhar quais linguagens são boas para isso
Brincando, às vezes até tento resolver em ASM de Game Boy. Na prática uso Clojure ou Python
Este ano estou fazendo um compilador para bytecode. No leaderboard uso Go e, graças à velocidade de compilação, fiquei em 1º no Day19 de 2022
Por exemplo, dá para gerar listas infinitas e iterar até satisfazer uma condição
Métodos como
each_cons,permutationeprimesão úteis no AoCSe você já deixar prontos utilitários para grid 2D ou parsing, fica muito mais eficiente
Este ano estou pensando em encarar em assembly (fasm)
Pode ser divertido ou doloroso, mas de qualquer jeito faz parte do aprendizado
Parece que o leaderboard desapareceu depois do boom da automação com IA do ano passado
É uma pena, mas parece ter sido uma decisão inevitável
De qualquer forma, competir já era difícil, então o leaderboard global não fazia muita diferença