Advent of code

 8 décembre 2023 

  Haunted Wasteland : Parcourir un chemin selon des instructions gauche/droite
LRLRLLRRLLRRLR
   
  
   
LFM = (PCJ, GQH)
   
THP = (SPP, MKB)
   
PBL = (VVX, JMM)
   
        
Bêtement pas parti du bon endroit et j'arrivais dans une boucle infinie. J'ai donc passé une heure à optimiser mon code hyper intelligemment pour qu'il soit mille fois plus rapide. Mais infini divisé par mille…
  1. code1.py
  2. code1_optim.py
  3. code2.py
from itertools import cycle
f = open("input.txt", 'r', encoding='utf-8')
lines = [line[:-1] for line in f.readlines()]

instructions = lines[0]

directions = dict()
for line in lines[2:]:
    directions[line[0:3]] = (line[7:10], line[12:15])


location = 'AAA'     # J'ai perdu littéralement une heure parce que je partais non de 'AAA'
                     # mais de l'endroit de la première ligne et que ça donnait une boucle infinie… >_>
nb_steps = 0
for next_dir in cycle(instructions):
    nb_steps += 1
    if next_dir == 'L':
        location = directions[location][0]
    else:
        location = directions[location][1]
    if location == 'ZZZ':
        break


print("Réponse partie 1:", nb_steps)