# ============================= # Graphe complet d'ordre n # 9 octobre 2025 # nsi.gecif.net # ============================= # Ce programme optimisé ne trace qu'une seule fois chaque arête du graphe # et dessine les sommets en même temps que les arêtes from turtle import * # n est l'ordre du graphe (entre 3 et 40) : n=15 # longueur des côtés du polygone régulier (en fonction de n) : longueur=1500/n # angle entre 2 côtés du polygone régulier (en fonction de n) : angle=360/n # liste des coordonnées des sommets qui seront sous forme de tuples : coordonnees=[] # titre de la fenêtre : title("Graphe complet d'ordre %d" % n) # vitesse maximale : speed(0) # cache le curseur : hideturtle() # déplace le curseur en fonction de la longueur des segments : up() goto(-longueur//2,-230) down() # récupère les coordonnées de tous les sommets dans la liste coordonnees : for i in range(n): # dessine les côtés du polygone régulier : forward(longueur) left(angle) # coordonnees est une liste de tuples : coordonnees.append(position()) # fait une copie de la liste coordonnees : coordonnees_2=coordonnees[:] # relie chaque sommet A à un sommet B : for a in coordonnees_2: for b in coordonnees: # ne trace pas les arrêtes entre 2 sommets adjacents dans la liste coordonnees : if abs(coordonnees.index(a)-coordonnees.index(b))>1: up() goto(a) down() goto(b) # supprime le premier élément dans la liste coordonnees pour ne pas tracer deux fois la même arête : coordonnees.remove(coordonnees[0]) # dessine le sommet en forme de rond rouge : color('red') up() goto(a[0],a[1]-8) down() begin_fill() circle(10) end_fill() color('black') # libère la fenêtre de la tortue : done()