20 points par GN⁺ 2025-12-01 | 2 commentaires | Partager sur WhatsApp
  • Advent of Code est un calendrier de l’Avent de puzzles de programmation destiné aux programmeurs de tous niveaux, avec des solutions possibles dans n’importe quel langage
  • Les participants peuvent l’utiliser à diverses fins, notamment pour la préparation aux entretiens, la formation en entreprise, les devoirs universitaires, les exercices pratiques et les compétitions de vitesse
  • Il est possible de participer sans diplôme en informatique, et les problèmes sont conçus pour s’exécuter en moins de 15 secondes même sur un ordinateur vieux de 10 ans
  • Le site prend en charge l’authentification OAuth, le mode à contraste élevé, les classements privés et la sélection des blocs de code
  • Le classement mondial a été supprimé en raison de problèmes de stress et de triche, et l’accent est mis sur une expérience de résolution agréable centrée sur les participants

Présentation d’Advent of Code

  • Advent of Code est un événement annuel de puzzles de programmation créé par Eric Wastl, proposant chaque année à partir du 1er décembre des énigmes sous la forme d’un calendrier de l’Avent en ligne
    • Les participants résolvent un nouveau problème chaque jour, librement et sans contrainte de langage
    • Les problèmes peuvent servir à des usages variés comme la préparation aux entretiens, la formation, l’entraînement, la compétition ou les défis entre participants
  • Aucune connaissance universitaire en informatique n’est nécessaire pour participer : des bases en programmation et en résolution de problèmes suffisent
    • Tous les problèmes peuvent s’exécuter en moins de 15 secondes même sur du matériel vieux de 10 ans

Comment participer et soutenir le projet

  • Pour soutenir Advent of Code, il est possible de le partager sur Bluesky, Twitter, Mastodon ou de contribuer directement via AoC++
  • Si vous bloquez sur un problème, il est recommandé de vérifier l’entrée d’exemple, écrire des cas de test, demander de l’aide à un ami ou solliciter des indices sur le subreddit

Conseils généraux (General Tips)

  • Si l’entrée et la sortie d’exemple ne correspondent pas, il faut relire l’énoncé et vérifier le comportement du code
  • Si l’exemple passe mais que la réponse reste fausse, créez des cas de test vérifiables manuellement pour valider le résultat
  • Si cela reste difficile à résoudre, vous pouvez faire une pause puis réessayer ou poser une question à la communauté

Questions fréquentes (FAQ)

  • Sélection des blocs de code : avec JavaScript activé, un triple-clic permet de tout sélectionner
  • Méthode d’authentification : OAuth est utilisé pour se connecter via des services externes comme Reddit ou GitHub, et les identifiants ne sont transmis qu’à ces services
    • Advent of Code ne stocke que l’ID, le nom, l’URL et l’image de l’utilisateur
  • Évolution de la difficulté : l’événement devient progressivement plus difficile au fil du temps, et la difficulté perçue dépend du niveau technique de chacun
  • Heure de publication des puzzles : ils sont publiés à minuit, heure normale de l’Est des États-Unis (UTC-5), car c’est le créneau horaire gérable pour l’organisateur
    • Pour ceux qui veulent rivaliser, il est possible de concourir localement via des classements privés
  • Problèmes de lisibilité : un mode à contraste élevé est pris en charge et peut être activé par défaut dans Firefox
  • Interdiction de proposer des puzzles : aucune idée de puzzle externe n’est acceptée pour des raisons de droits d’auteur
  • Signalement de bugs : si plus d’une heure s’est écoulée depuis la publication d’un puzzle, de nombreux utilisateurs l’ont probablement déjà résolu, donc la probabilité d’un bug est faible
    • En cas de problème, il est recommandé de vérifier d’abord sur le subreddit
  • Compétition de vitesse : si vous visez des résolutions très rapides, cela demandera davantage d’entraînement et de technique, mais le plus important est de participer selon vos propres objectifs
  • Modification de la durée de l’événement : après 10 ans de calendrier inchangé, la fin a été avancée à la mi-décembre afin de réduire la charge de temps pour l’organisateur
  • Suppression du classement mondial : après 10 ans, il a été supprimé à cause d’une compétition excessive et de problèmes comme les attaques DDoS et le stress des utilisateurs
    • À la place, une fonction de partage en lecture seule des classements privés est proposée
  • Utilisation de l’IA : comme les puzzles visent à développer la réflexion humaine, l’usage de l’IA n’est pas recommandé
    • Cela est expliqué par l’analogie suivante : « faire faire l’exercice à quelqu’un d’autre ne vous rend pas plus fort »
  • Interdiction de copier le contenu : Advent of Code peut être utilisé gratuitement, mais la copie du texte des puzzles ou des données d’entrée est interdite
    • Il est également interdit d’imiter le design du site web ou son nom

Crédits (Credits)

  • Puzzles, code, design : Eric Wastl
  • Bêta-test : Ben Lucek, JP Burke, Aneurysm9, Andrew Skalski
  • Responsables de communauté : Danielle Lucek, Aneurysm9
  • Participants : tous les utilisateurs

Mentions légales (Legal)

  • Advent of Code est une marque déposée aux États-Unis, et son design, son langage, son style et son concept sont tous des actifs exclusifs
    • Toute reproduction ou utilisation sans accord écrit explicite est interdite
  • Les liens ou citations vers les puzzles sont librement autorisés, y compris dans un contexte commercial
  • Advent of Code ne revendique aucun droit d’auteur sur le code de solution des participants

2 commentaires

 
roxie 2025-12-01

J’y ai aussi participé un peu l’année dernière... Une année passe vraiment en un clin d’œil T_T

 
GN⁺ 2025-12-01
Avis Hacker News
  • Chaque fois que j’entends dire qu’on peut participer même sans formation en informatique, j’ai l’impression que cela peut en réalité être décevant pour les programmeurs amateurs
    Dire qu’on peut “aller assez loin” est vrai si cela signifie résoudre 1 ou 2 problèmes faciles, mais au-delà, ce n’est pas simple

    • Quelqu’un a dit que les problèmes étaient “trop faciles”, et je me suis vraiment demandé dans quel monde cette personne vivait
    • Je suis d’accord aussi. J’ai été surpris de voir que des amis qui travaillent comme développeurs n’avançaient pas tant que ça
  • Advent of Code est le temps fort de chaque mois de décembre
    La disparition du classement mondial est regrettable, mais compréhensible. Le fait qu’il n’y ait que 12 jours cette année est aussi bienvenu, car cela allège la charge
    Je recommande de ne pas chercher à “gagner”, mais simplement de profiter du plaisir de résoudre les problèmes

    • Il y a 12 jours, mais en réalité 24 défis, donc je vais en profiter tranquillement sur 24 jours
    • C’est dommage que ce soit réduit à 12 jours, mais le classement mondial était de toute façon difficilement compétitif à cause des écarts de fuseaux horaires. Les classements privés sont bien mieux
    • Cette année, je pense créer un classement local avec des amis. De toute façon, je n’aurais jamais atteint le classement mondial
    • Vu que ce genre d’événement ne m’intéresse absolument pas, cela confirme que je ne suis clairement pas développeur
  • J’adore vraiment Advent of Code
    Le fait qu’il n’y ait que 12 jours cette année m’arrange plutôt. En fin d’année, il y a beaucoup d’obligations dans la vraie vie, donc l’an dernier je n’en ai fait qu’environ la moitié
    Un grand merci à toutes les personnes qui y participent

    • L’an dernier, je me suis arrêté au jour 7, donc je suis content que ce soit moins lourd cette année
    • Cette fois, je vais peut-être enfin réussir à tout terminer
    • J’ai vraiment hâte d’être à cette édition
  • J’ai essayé Advent of Code pour la première fois cette année, et c’était vraiment amusant
    C’est similaire à Project Euler, mais plus orienté programmation que mathématiques
    La première partie est simple, mais la seconde demande une approche optimisée, ce qui la rend intéressante

  • Supprimer le classement public est une décision raisonnable
    Même indépendamment du problème des LLM, il était impossible d’être compétitif en dehors de certains fuseaux horaires américains
    En revanche, ce serait intéressant d’avoir des statistiques mondiales, par exemple le taux de résolution selon les fuseaux horaires

    • Les LLM ont tout gâché, mais avant c’était vraiment intéressant de voir les solutions du haut du classement
      C’était aussi amusant de regarder des vidéos de code en direct sur YouTube
  • J’attends Advent of Code chaque année
    Sans me stresser avec les classements, j’en fais une occasion d’apprendre un nouveau langage ou de perfectionner mes compétences
    Dans la vie courante, je n’ai pas souvent l’occasion de lancer moi-même des projets ou d’implémenter un DFS, donc ce genre d’événement est un très bon entraînement

    • Moi aussi, j’aimerais faire un travail qui consiste uniquement à résoudre ce type de problèmes, mais je pense que je finirais en burn-out
      Donc au quotidien, j’équilibre avec des tâches comme l’écriture de tests ou la documentation
      Chaque année, j’améliore un peu mes anciennes solutions pour travailler l’efficacité et la lisibilité
  • Je suis content qu’Advent of Code revienne cette année aussi
    En lisant la FAQ, j’ai eu du mal à comprendre la règle qui interdit de publier les données d’entrée
    Je comprends pour le texte des énigmes, mais c’est dommage que les entrées doivent aussi rester privées. Cela dit, comme c’est gratuit, je respecte la règle

    • Apparemment, si les entrées étaient publiques, quelqu’un pourrait reproduire la logique de génération des énigmes
    • Il suffit de ne commit que les entrées d’exemple et de faire tourner les tests dessus. Avec une structure du type doctest en Python ou Rust, c’est propre
    • Je publie mon code, mais je gère les entrées dans un private submodule
    • Je chiffre les fichiers d’entrée avec git-crypt avant de les mettre dans un dépôt public
  • Sondage sur les langages : Python et C++ sont les plus utilisés, mais parmi les langages de niche, certains se prêtent très bien à AoC
    L’idée est de partager les langages qui fonctionnent bien

    • J’aime les langages à tableaux comme K ou Uiua. Ça a l’air absurde, mais c’est parfait pour les premiers problèmes
      C’est une blague, mais il m’arrive aussi d’en résoudre en ASM pour Game Boy. En pratique, j’utilise Clojure ou Python
    • J’utilise un langage maison conçu dans un style Haskell+Bash. Il y a aussi une démo YouTube
      Cette année, je construis un compilateur de bytecode. Pour le classement, j’utilise Go, et grâce à sa vitesse de compilation, j’ai terminé premier au Day19 de 2022
    • Avec Haskell, les parser combinators facilitent le traitement des entrées. En plus, l’évaluation paresseuse et la récursion permettent d’écrire un code concis
      Par exemple, je résous certains problèmes en générant une liste infinie puis en la parcourant jusqu’à ce qu’une condition soit satisfaite
    • Ruby est idéal. Sa syntaxe expressive, sa riche bibliothèque standard et ses outils de manipulation de chaînes sont très utiles
      Des méthodes comme each_cons, permutation ou prime sont pratiques pour AoC
    • Go est appréciable pour sa rapidité et sa simplicité, et OCaml a un excellent système de types ainsi qu’une bonne vitesse d’exécution
      Si on prépare à l’avance des grilles 2D ou des utilitaires de parsing, c’est bien plus efficace
  • Cette année, je pense tenter l’aventure en assembleur (fasm)
    Ce sera peut-être amusant, peut-être pénible, mais dans tous les cas ce sera un apprentissage

  • Le classement a sans doute disparu après le boom de l’automatisation par l’IA l’an dernier
    C’est dommage, mais cela semble avoir été inévitable

    • L’heure de publication des énigmes était calée sur les États-Unis, donc j’étais toujours en train de dormir
      De toute façon, la compétition était difficile, donc le classement mondial n’avait pas beaucoup de sens