• [^] # Re: jour 9

    Posté par . En réponse au journal Advent of Code 2025. Évalué à 2. Dernière modification le 09 décembre 2025 à 11:54.

    Partie 1 en 2 lignes

    from itertools import product as prod
    P = [tuple(map(int,line.split(","))) for line in open(0).read().strip().split('\n')]
    print(max((1+abs(a-c))*(1+abs(b-d)) for (a,b),(c,d) in prod(P,P)))

    Au moins deux fois trop de calculs, mais l'optimisation ne valait pas la peine, ça reste très rapide.

    Partie 1 et 2

    from shapely.geometry.polygon import Polygon
    from shapely.geometry import Point
    from itertools import product as prod
    P = [tuple(map(int,line.split(","))) for line in open(0).read().strip().split('\n')]
    shape = Polygon(P)
    ans1 = ans2 = 0
    for (a,b),(c,d) in prod(P,P):
     if (a,b)>=(c,d): # avoid comapring a pair twice
     continue
     area = (1+abs(a-c))*(1+abs(b-d))
     ans1 = max(ans1, area)
     if area <= ans2: # avoid more computation if not a new max
     continue
     rect = Polygon([(a,b),(a,d),(c,d),(c,b)])
     if shape.contains(rect):
     ans2 = area
    print(ans1, ans2)

    Pas trop d'intérêt à compacter le code puisque je n'ai pas implémenté le gros morceau qu'est le contains.