URL: https://linuxfr.org/forums/programmationautre/posts/advent-of-code-2023-day-8 Title: Advent of Code 2023, day 8 Authors: alberic89 🐧 Date: 2023年12月08日T20:57:22+01:00 License: CC By-SA Tags: aoc2023 Score: 0 Une tempête de sable vous a enlevé votre guide, juste après qu'il vous ait mis en garde contre les fantômes du désert ! Heureusement, vous avez trouvé une carte du désert dans les fontes du chameau que vous montez. Elle se présente sous la forme d'une suite d'instructions gauche/droite et un ~~sac~~réseau de nœuds. ``` RL AAA = (BBB, CCC) BBB = (DDD, EEE) CCC = (ZZZ, GGG) DDD = (DDD, DDD) EEE = (EEE, EEE) GGG = (GGG, GGG) ZZZ = (ZZZ, ZZZ) ``` Vous remarquez qu'il faut partir du nœud "AAA" pour arriver au nœud "ZZZ". Pour vous déplacer, il faut passer en boucle la suite de lettres "L" et "R" (gauche et droite) en regardant en commençant du départ le nom du nœud suivant selon s'il est à droite ou à gauche. On atteint l'arrivée après 2 instructions : `AAA R => CCC L => ZZZ` Pour l'exemple suivant, 6 étapes sont nécessaires : ``` LLR AAA = (BBB, BBB) BBB = (AAA, ZZZ) ZZZ = (ZZZ, ZZZ) ``` `AAA L => BBB L => AAA R => BBB L => AAA L => BBB R => ZZZ` En combien d'étapes atteint-on l'arrivée ?  Mais, attendez ! Vous revoilà à votre point de départ ! Et si c'était une carte destinée aux fantômes ? Les fantômes ne sont pas contraints par les lois de l'espace-temps. Vous remarquez aussi quelque chose de curieux : il y a exactement le même nombre de nœuds finissants par "A" que par "Z" ! Il faut en fait parcourir **en même temps** tous les chemins en commençant de tous les points finissants par "A" et s'arrêter lorsqu'on est partout sur un point finissant par "Z". Par exemple : ``` LR 11A = (11B, XXX) 11B = (XXX, 11Z) 11Z = (11B, XXX) 22A = (22B, XXX) 22B = (22C, 22C) 22C = (22Z, 22Z) 22Z = (22B, 22B) XXX = (XXX, XXX) ``` Demande 6 étapes. Combien en faut-il pour votre carte ? Indice : il en faut beaucoup. Brutus n'est pas la solution du jour. Il faut dans les 10^14.