Aller au contenu

Advent of Code 2024

Entraînement · Advent of Code 2024 · Python (OCaml pour le jour 7)

Cours : Graphes · Programmation dynamique · Force brute · Dictionnaires · Arbres

Dépôt : advent-of-code-2024

Vue d'ensemble

Jour Nature du problème Méthode Notions du cours Solution
1 Comparer deux listes d'entiers, puis compter des occurrences Tri puis appariement Tri, complexité quadratique Python
2 Suites presque monotones, avec droit à une suppression Force brute sur la suppression Exploration exhaustive Python
3 Extraire des instructions valides d'un texte bruité Expression régulière et drapeau Expressions régulières, drapeau Python
4 Mots cachés dans une grille de lettres Balayage des 8 directions Boucles imbriquées Python
5 Listes soumises à des contraintes d'ordre Tri à bulles avec comparateur Tri à bulles, tri topologique Python
6 Marcheur qui tourne devant les obstacles ; obstacles créant une boucle Simulation, détection de cycle sur (position, direction) Ensembles, grilles Python
7 Placer des opérateurs pour atteindre une cible Exploration exhaustive avec élagage Construction de candidats, élagage Python, OCaml
8 Points alignés avec des paires d'antennes Regroupement par clé, marche le long d'une droite Dictionnaires, ensembles Python
9 Compacter un disque, bloc par bloc puis fichier par fichier Deux indices qui se rapprochent ; liste de zones libres Boucles tant que, complexité Python
10 Chemins à pente constante dans une carte de hauteurs Parcours en profondeur avec pile, avec puis sans marquage Parcours de graphe, piles Python
11 Suite de nombres qui se dédoublent pendant de nombreuses étapes Mémoïsation sur (valeur, étapes restantes) Mémoïsation Python
12 Aire, périmètre et nombre de côtés des régions d'une grille Inondation, puis composantes connexes des bords Flood fill, composantes connexes Python
13 Combinaison entière positive de deux vecteurs atteignant une cible Force brute, puis système 2×2 (Cramer) Exploration exhaustive, arithmétique Python
14 Robots se déplaçant sur un tore ; repérer une image Arithmétique modulaire, heuristique « aucune collision » Dictionnaires, arithmétique modulaire Python
15 Pousser des caisses, puis des caisses de largeur 2 Simulation, parcours des caisses entraînées Parcours de graphe, grilles Python
16 Labyrinthe avec coût de rotation ; cases des chemins optimaux Dijkstra sur (position, direction) Dijkstra, file de priorité Python
17 Petite machine à 3 bits, puis programme qui s'affiche lui-même Interprète avec arrêt anticipé Interprète Python
18 Grille qui se bouche : premier obstacle qui coupe le chemin Test d'accessibilité répété Parcours en largeur, connexité Python
19 Décomposer des mots en motifs, compter les décompositions Mémoïsation sur le suffixe restant Mémoïsation Python
20 Raccourcis sur un circuit ; compter ceux qui font gagner du temps Deux BFS (départ, arrivée) puis paires à distance de Manhattan bornée Parcours en largeur Python
21 Claviers imbriqués : séquence de touches minimale Expansion des plus courts chemins niveau par niveau (partie 1 seulement) Plus courts chemins, mémoïsation Python (brouillon)
22 Générateur pseudo-aléatoire ; meilleure séquence de variations Fenêtre glissante et dictionnaire de scores Dictionnaires, hachage Python
23 Plus grande clique d'un graphe non orienté Retour sur trace par extension de clique Graphes complets, exploration exhaustive Python
24 Circuit booléen ; réparer un additionneur aux fils échangés Évaluation récursive, unification avec un additionneur modèle Arbres d'expressions, formules Python
25 Compatibilité de motifs en colonnes — — —

Jour 7 — Bridge Repair

Énoncé : adventofcode.com/2024/day/7

Jour 11 — Plutonian Pebbles

Énoncé : adventofcode.com/2024/day/11

Jour 16 — Reindeer Maze

Énoncé : adventofcode.com/2024/day/16

Jour 19 — Linen Layout

Énoncé : adventofcode.com/2024/day/19

Jour 23 — LAN Party

Énoncé : adventofcode.com/2024/day/23