24-NSIJ1JA1-1

  1. m1 = Maison(1)
    m2 = Maison(3.5)
    
  2. a = Antenne(2.5, 1)
    
  3. def creation_rue(pos):
        pos.sort()
        maisons = []
        for p in pos:
            m = Maison(p)
            maisons.append(m)
        return maisons
    
  4. Une maison en position \(p_m\) est couvert par un radar en position \(p_r\) si \(\lvert p_m - p_r \rvert \leq r_a\)\(r_a\) est le rayon de l'antenne.

    def couvre(self, maison):
        distance = abs(maison.get_pos_maison() - self.get_pos_antenne())
        return distance <= self.get_rayon()
    
  5. Cette suite d'instructions affiche [0, 3, 7, 10.5].

  6. def strategie_2(maisons, r):
        antennes = [Antenne(maisons[0].get_pos_maison() + r, r)]
        for m in maisons[1:]:
            if not antennes[-1].couvre(m):
                antennes.append([Antenne(m.get_pos_maison() + r, r)])
        return antennes
    
  7. Les deux stratégies examinent chaque maison une seule fois, en effectuant des comparaisons et des ajouts simples. Le coût en nombre d'opérations pour ces deux stratégies est donc linéaire, soit \(\boxed{O(n)}\).