URL: https://linuxfr.org/forums/programmationautre/posts/advent-of-code-2023-jour-10 Title: Advent of Code 2023 : Jour 10 Authors: steph1978 Date: 2023年12月10日T13:27:17+01:00 License: CC By-SA Tags: aoc2023 Score: 3 --- Jour 10: Labyrinthe de tuyaux --- Vous utilisez le deltaplane pour monter sur l'air chaud de l'île du Désert jusqu'à l'île flottante en métal. Cette île est étonnamment froide et il n'y a certainement pas de thermiques sur lesquels planer, donc vous laissez votre deltaplane derrière vous. Vous vous promenez pendant un moment, mais vous ne trouvez ni personnes ni animaux. Cependant, vous trouvez parfois des panneaux indiquant "Sources chaudes" pointant dans une direction apparemment cohérente ; peut-être pourrez-vous trouver quelqu'un aux sources chaudes et leur demander où sont fabriquées les pièces de la machine du désert. Le paysage ici est étranger ; même les fleurs et les arbres sont en métal. Alors que vous vous arrêtez pour admirer de l'herbe en métal, vous remarquez quelque chose de métallique qui se précipite hors de votre champ de vision périphérique et saute dans un grand tuyau ! Ça ne ressemblait à aucun animal que vous ayez jamais vu ; si vous voulez mieux le voir, vous devrez le devancer. En scannant la zone, vous découvrez que le champ entier sur lequel vous vous tenez est densément rempli de tuyaux ; c'était difficile à dire au début car ils ont la même couleur argentée métallique que le "sol". Vous faites un rapide croquis de tous les tuyaux de surface que vous pouvez voir (votre entrée de puzzle). Les tuyaux sont disposés dans une grille bidimensionnelle de tuiles : - | est un tuyau vertical reliant le nord et le sud. - - est un tuyau horizontal reliant l'est et l'ouest. - L est un coude à 90 degrés reliant le nord et l'est. - J est un coude à 90 degrés reliant le nord et l'ouest. - 7 est un coude à 90 degrés reliant le sud et l'ouest. - F est un coude à 90 degrés reliant le sud et l'est. - . est le sol ; il n'y a pas de tuyau sur cette tuile. - S est la position de départ de l'animal ; il y a un tuyau sur cette tuile, mais votre croquis ne montre pas la forme du tuyau. En fonction de l'acoustique du bruit de l'animal qui se précipite, vous êtes sûr que le tuyau qui contient l'animal est une grande boucle continue. Par exemple, voici une boucle carrée de tuyaux : ``` ..... .F-7. .|.|. .L-J. ..... ``` Si l'animal était entré dans cette boucle dans le coin nord-ouest, le croquis ressemblerait plutôt à ceci : ``` ..... .S-7. .|.|. .L-J. ..... ``` Dans le diagramme ci-dessus, la tuile S est toujours un coude F à 90 degrés : vous pouvez le dire à cause de la façon dont les tuyaux adjacents s'y connectent. Malheureusement, il y a aussi de nombreux tuyaux qui ne sont pas connectés à la boucle ! Ce croquis montre la même boucle que ci-dessus : ``` -L|F7 7S-7| L|7|| -L-J| L|-JF ``` Dans le diagramme ci-dessus, vous pouvez toujours déterminer quels tuyaux forment la boucle principale : ce sont ceux qui sont connectés à S, les tuyaux auxquels ces tuyaux se connectent, les tuyaux auxquels ces tuyaux se connectent, et ainsi de suite. Chaque tuyau de la boucle principale se connecte à ses deux voisins (y compris S, qui aura exactement deux tuyaux se connectant à lui, et qui est supposé se reconnecter à ces deux tuyaux). Voici un croquis qui contient une boucle principale légèrement plus complexe : ``` ..F7. .FJ|. SJ.L7 |F--J LJ... ``` Voici le même croquis d'exemple avec les tuiles de tuyaux supplémentaires, qui ne font pas partie de la boucle principale, également affichées : ``` 7-F7- .FJ|7 SJLL7 |F--J LJ.LJ ``` Si vous voulez devancer l'animal, vous devriez trouver la tuile de la boucle qui est la plus éloignée de la position de départ. Comme l'animal est dans le tuyau, il n'est pas logique de mesurer cela par distance directe. Au lieu de cela, vous devez trouver la tuile qui prendrait le plus grand nombre d'étapes le long de la boucle pour atteindre à partir du point de départ - peu importe dans quel sens l'animal a parcouru la boucle. Dans le premier exemple avec la boucle carrée : ``` ..... .S-7. .|.|. .L-J. ..... ``` Vous pouvez compter la distance de chaque tuile de la boucle par rapport au point de départ de cette manière : ``` ..... .012. .1.3. .234. ..... ``` Dans cet exemple, le point le plus éloigné du départ est à 4 étapes de distance. Voici la boucle plus complexe à nouveau : ``` ..F7. .FJ|. SJ.L7 |F--J LJ... ``` Voici les distances pour chaque tuile de cette boucle : ``` ..45. .236. 01.78 14567 23... ``` Trouvez la seule grande boucle commençant à S. Combien d'étapes le long de la boucle faut-il pour aller de la position de départ au point le plus éloigné de la position de départ ?

AltStyle によって変換されたページ (->オリジナル) /