Aperçu du sujet
EXERCICE 1 (6 points) Cet exercice porte sur la programmation Python, la programmation orientée objet et l’algorithmique. Une entreprise doit placer des antennes relais le long d’une rue rectiligne. Une antenne relais de portée (ou rayon) couvre toutes les maisons qui sont à une distance inférieure ou égale à de
EXERCICE 1 (6 points) Cet exercice porte sur la programmation Python, la programmation orientée objet et l’algorithmique. Une entreprise doit placer des antennes relais le long d’une rue rectiligne. Une antenne relais de portée (ou rayon) couvre toutes les maisons qui sont à une distance inférieure ou égale à de l’antenne. 𝑝𝑝 Connaissant les posit𝑝𝑝ions des maisons dans la rue, l’objectif est de placer les antennes le long de la rue, pour que toutes les maisons soient couvertes, tout en en minimisant le nombre d’antennes utilisées. La rue est représentée par un axe, et les maisons sont représentées des points sur cet axe : Figure 1. Deux maisons sur une rue, repérée par leur abscisse : 1 et 3,5 Les entités manipulées sont modélisées en utilisant la programmation orientée objet. class Maison: def __init__(self, position): self._position = position def get_pos_maison(self): return self._position class Antenne: def __init__(self, position, rayon): self._position = position self._rayon = rayon def get_pos_antenne(self): return self._position def get_rayon(self): return self._rayon 1. Donner le code qui crée et initialise deux variables et avec des instances m1 m2 de la classe situées aux abscisses 1 et 3,5 (Figure 1). Maison 24-NSIJ1JA1 Page : 2 / 14 On ajoute à présent une antenne ayant un rayon d’action de 1 à la position 2,5 : Figure 2. L’antenne placée en 2,5 et de rayon d’action 1 couvre la maison en 3,5 mais pas celle en 1 2. Donner le code qui crée la variable correspondant à l’antenne à la position 2,5 a avec le rayon d’action 1. On souhaite modéliser une rue par une liste d’objets de type . Cette liste sera Maison construite à partir d’une autre liste contenant des nombres correspondant aux positions des maisons. La fonction réalise ce travail. Elle prend en creation_rue paramètre une liste de positions et renvoie une liste d’objets de type . Maison 3. Recopier le schéma ci-dessous et le compléter pour donner une représentation graphique de la situation créée par : creation_rue([0, 2, 3, 4, 5, 7, 9, 10.5, 11.5]) Figure 3. Axe pour représenter le problème avec 9 maisons 4. Compléter le code donné ci-dessous de la fonction . creation_rue 1 def creation_rue(pos): 2 pos.sort() 3 maisons = [] 4 for p in pos: 5 m = Maison(p) 6 maisons.append(...) 7 return ... Pour rappel : la commande trie la liste . tab.sort() tab 24-NSIJ1JA1 Page : 3 / 14 La méthode de