• [^] # Re: Jour 4

    Posté par . En réponse au journal Advent of Code 2025. Évalué à 4.

    Très bon jour.

    Première partie en one shot, sans passer par l'exemple ; deuxième partie en 1 essai ; en moins de 10 minutes.

    Je suis passé par des sets, très facile à manipuler en python et plutôt efficaces en perf.

    Voici le code, un peu refactoré pour tenir en 6 lignes:

    rolls0 = rolls = {(i,j) for i,line in enumerate(open(0)) for j,c in enumerate(line) if c == '@'}
    l = 999999999
    while len(rolls)<l:
     l = len(rolls)
     rolls = {(x,y) for (x,y) in rolls 
     if 3<sum(((x+dx,y+dy) in rolls)
     for (dx,dy) in [(0,-1),(1,0),(0,1),(-1,0),(1,1),(-1,-1),(1,-1),(-1,1)])}
     print(len(rolls0)-len(rolls))

    Cela prend 16MB de RAM et 0.7s de CPU.