• [^] # Re: jour 5

    Posté par . En réponse au journal Advent of Code 2025. Évalué à 4. Dernière modification le 05 décembre 2025 à 20:56.

    Et en 4 lignes en utilisant reduce:

    I,J = open(0).read().strip().split("\n\n")
    t, *R = sorted(tuple(map(int,i.split("-"))) for i in I.split("\n"))
    print(sum(any(a <= int(i) <= b for (a,b) in [t]+R) for i in J.split("\n")))
    print(__import__("functools").reduce(lambda a, r: a if r[1] <= a[1] else (a[0] + (r[1]-r[0]+1 if r[0]>a[1] else r[1]-a[1]), r[1]), R, (t[1]-t[0]+1,t[1]))[0])

    Pour comprendre, l'accumulateur est, à tout moment de la réduction, un tuple[la somme accumulé, le max atteint].