Advent of code

 3 décembre 2023 

  Gear Ratios : Trouver des nombres qui touchent des symboles dans une grille
..172...................
   
..........*.......712...
   
.......823.835......%...
   
            
Mon algo pour la partie 2 est plus compliqué que nécessaire. Il suffit d'avoir un tableau qui compte le nombre de chaque carte, et d'augmenter au fur et à mesure qu'on les passe en revue.
  1. code1.py
  2. code1_bordSeulement.py
  3. code2.py
  4. code2_court.py
  5. code2_depuis_gears_plutot_que_nombres.py
def is_touching_symbol(lines: list[str], y: int, x1: int, x2: int) -> bool:
    for h in range(y-1, y+2):
        if h < 0 or h >= HEIGHT:
            continue
        # Parcours du bord seulement, calcul des x suivant la ligne :
        les_x: list|range
        if h == y:
            les_x = [x1-1, x2]
        else:
            les_x = range(x1-1, x2+1)
        for w in les_x:
            if w < 0 or w >= WIDTH:
                continue
            #   if lines[h][w] != '.':   suffirait, car les nombres ne se touchent jamais dans mon input
            if lines[h][w] not in '.0123456789':
                return True
    return False