Advent of Code 2017¶
Entraînement · Advent of Code 2017 · Python
Cours : Arbres · Graphes · Piles et files · Interprète
Dépôt : advent-of-code-2017
Vue d'ensemble¶
| Jour | Nature du problème | Méthode | Notions du cours | Solution |
|---|---|---|---|---|
| 1 | Comparer chaque chiffre d'une liste circulaire à un autre | indice modulo la longueur | Arithmétique modulaire, accumulateur | Python |
| 2 | Somme de contrôle calculée ligne par ligne | double boucle sur les paires | Boucles imbriquées | Python |
| 3 | Coordonnées dans une spirale, puis spirale de sommes | formule par anneau, dictionnaire des valeurs | Dictionnaires, grilles | Python |
| 4 | Phrases sans mot répété, puis sans anagrammes | comparaison de représentations des mots | Ensembles | Python |
| 5 | Suivre des sauts qui modifient leur propre décalage | simulation sur une liste | Variant de boucle | Python |
| 6 | Redistribuer jusqu'à revoir une configuration | dictionnaire état → date, détection de cycle | Dictionnaires | Python |
| 7 | Racine d'un arbre, puis le poids qui le déséquilibre | racine = non-fils, récursion postfixe | Arbres, parcours récursif | Python |
| 8 | Registres modifiés sous condition | dictionnaire de registres, eval du test |
Interprète | Python |
| 9 | Flux de groupes imbriqués et de passages ignorés | pile de caractères, analyse récursive | Piles, descente récursive | Python |
| 10 | Hachage par retournements successifs dans un cercle | liste circulaire doublement chaînée | Listes chaînées | Python |
| 11 | Distance sur une grille hexagonale | coordonnées décalées, formule de distance | Géométrie discrète | Python |
| 12 | Groupes de programmes reliés entre eux | DFS récursif, comptage de composantes | Composantes connexes | Python |
| 13 | Traverser des scanners périodiques sans être vu | simulation, puis congruences | Arithmétique modulaire | Python |
| 14 | Grille de bits issue de hachés, puis régions | hachage du jour 10, remplissage par DFS | Flood fill, composantes connexes | Python |
| 15 | Comparer deux générateurs pseudo-aléatoires | simulation directe, 16 bits de poids faible | Arithmétique modulaire | Python (partie 1) |
| 16 | Permutations répétées d'une file de danseurs | mémoriser les états, période | Listes, détection de cycle | Python |
| 17 | Insertions dans un tampon circulaire | deque, puis suivre une seule position |
Files, complexité | Python |
| 18 | Deux programmes qui communiquent par messages | deux interprètes et deux files, détection d'interblocage | Files, producteurs-consommateurs | Python |
| 19 | Suivre un tracé dans une grille | marche guidée par les caractères | Grilles | Python |
| 20 | Particules en mouvement et collisions | simulation pas à pas, seuil d'arrêt | Dictionnaires, simulation | Python |
| 21 | Agrandir une image par règles de motifs | huit symétries du carré, découpage en blocs | Matrices, symétries | Python |
| 22 | Fourmi de Langton à deux puis quatre états | grille infinie dans un defaultdict |
Automates cellulaires | Python |
| 23 | Comprendre un programme assembleur trop lent | interprète, puis traduction à la main | Interprète, arithmétique | Python |
| 24 | Construire le pont le plus solide avec des pièces | énumération exhaustive en largeur | Parcours en largeur, recherche exhaustive | Python |
| 25 | Simuler une machine de Turing | table de transitions, ruban dans un defaultdict |
Modèles Turing-complets, dictionnaires | Python |
Jour 7 — Recursive Circus¶
Énoncé : adventofcode.com/2017/day/7
Jour 9 — Stream Processing¶
Énoncé : adventofcode.com/2017/day/9
Jour 12 — Digital Plumber¶
Énoncé : adventofcode.com/2017/day/12
Jour 18 — Duet¶
Énoncé : adventofcode.com/2017/day/18