20 pontos por GN⁺ 2025-12-01 | 2 comentários | Compartilhar no WhatsApp
  • 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

 
roxie 2025-12-01

Eu participei um pouco no ano passado também... este ano realmente passou voando ;_;

 
GN⁺ 2025-12-01
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

    • Teve gente dizendo que os problemas são “fáceis demais”, e eu fiquei me perguntando em que mundo essa pessoa vive
    • Também concordo. Fiquei surpreso ao ver que amigos que trabalham como desenvolvedores não avançaram tanto quanto eu esperava
  • 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

    • São 12 dias, mas na prática 24 desafios, então pretendo aproveitar com calma ao longo de 24 dias
    • É uma pena ter sido reduzido para 12 dias, mas o leaderboard global já era difícil como competição de verdade por causa da diferença de fusos horários. O leaderboard pessoal é bem melhor
    • Este ano estou pensando em montar um leaderboard local com amigos. No global eu não subiria mesmo
    • Vendo que eu não tenho interesse nenhum nesse tipo de evento, fica claro que eu não sou desenvolvedor
  • 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

    • No ano passado só fui até o dia 7, então estou gostando de ser menos puxado este ano
    • Talvez desta vez eu finalmente consiga completar tudo
    • Estou animadíssimo para este ano
  • 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

    • Os LLMs estragaram tudo, mas antes era realmente interessante ver as soluções do pessoal do topo
      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

    • Eu também gostaria de trabalhar só resolvendo esse tipo de problema, mas acho que acabaria em burnout
      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

    • Dizem que, se a entrada for pública, alguém pode copiar a lógica de geração dos puzzles
    • Basta dar commit só nas entradas de exemplo e rodar os testes com elas. Se estruturar como o doctest de Python ou Rust, fica bem organizado
    • Eu publico o código, mas mantenho as entradas em um submódulo privado
    • Eu criptografo os arquivos de entrada com git-crypt e os envio para um repositório público
  • 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

    • Eu gosto de linguagens de array como K ou Uiua. Parecem bizarras, mas são perfeitas para os primeiros problemas
      Brincando, às vezes até tento resolver em ASM de Game Boy. Na prática uso Clojure ou Python
    • Eu uso uma linguagem própria feita no estilo Haskell+Bash. Tem até demo no YouTube
      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
    • Com Haskell, parser combinators facilitam o processamento da entrada. Além disso, avaliação preguiçosa e recursão permitem escrever código conciso
      Por exemplo, dá para gerar listas infinitas e iterar até satisfazer uma condição
    • Ruby é ideal. Tem sintaxe expressiva, uma biblioteca padrão rica e muitas ferramentas para manipular strings
      Métodos como each_cons, permutation e prime são úteis no AoC
    • Go é bom por ser rápido e simples, e OCaml tem um sistema de tipos excelente e boa velocidade de execução
      Se 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

    • Como o horário de liberação dos puzzles segue o horário dos EUA, eu sempre estava dormindo
      De qualquer forma, competir já era difícil, então o leaderboard global não fazia muita diferença