• # sans PPCM, t'est cuit

    Posté par . En réponse au message Advent of Code 2023, day 8. Évalué à 1.

    J'ai bien brûlé du CPU avant de comprendre qu'il fallait pas tout faire tourner en même temps mais juste calculer le nombre d'étapes de chaque fantôme puis de prendre leur PPCM.

    En 20 lignes de python:

    import sys
    from itertools import cycle
    from math import lcm
    I, _, *P = [l for l in sys.stdin.read().splitlines()]
    # BCN = (HFN, KFC)
    # 0123456789012345678
    P = {l[0:3]:(l[7:10],l[12:15]) for l in P}
    G = [p for p in P.keys() if p[2] == 'A']
    R = []
    for g in G:
     C = g
     N = 0
     for i in cycle(I):
     if C[2] == 'Z':
     break
     C = P[C][i == 'R']
     N += 1
     R.append(N)
    print(lcm(*R))