• [^] # Re: Jour 7

    Posté par (Mastodon) . En réponse au journal Advent of Code 2025. Évalué à 2. Dernière modification le 09 décembre 2025 à 19:18.

    Je ne crois pas avoir spécialement utilisé mon cerveau pour cet exercice, un code sur smartphone, peu lisible, mais efficace.
    Je crois avoir été naïf en première approche, mais la naïveté ici est explosive : on ne peut pas compter les 357 525 737 893 560 rayons de l'exercice 2 de façon indépendante.

    data = sys.stdin.read().strip().splitlines()
    w,h=len(data[0]),len(data)
    map="".join(data)
    b={map.index("S")} # exercice 1
    c={map.index("S"):1} # exercice 2: 1 seul rayon au départ
    ex1 = 0
    for _ in range(h-1):
     n={i+w for i in b if map[i+w]=="."} # ligne droite
     s={i+w for i in b if map[i+w]=="^"} # split
     ex1+=len(s)
     # Tous les endroits où on a des rayons, pour les 2 exercices
     b=n.union({i+1 for i in s},{i-1 for i in s}) # ex1
     d={i:c[i-w] if i in n else 0 for i in b} # On reprend les rayons directs
     for i in s: # On ajoute les rayons splittés
     d[i-1]+=c[i-w]
     d[i+1]+=c[i-w]
     c=d
    ex2=sum(c.values())
    • Yth.