Aller au contenu

Thème 7 : Conditions avancées, opérateurs booléens

Casernes de pompiers

Algorithme

Le point principal de l'algorithme consiste à tester l'intersection de deux rectangles. En regardant sur un dessin on voit que pour tester une intersection il faut regarder la "projection" du rectangle sur les deux axes. Si les segments correspondants s'intersectent sur chaque axe alors les rectangles s'intersectent, sinon les rectangles sont disjoints.

image fond

Les rectangles ne s'intersectent donc pas si au moins un des couples de segments ne s'intersecte pas. Le programme est alors relativement simple.

Programme
nbPaires = int(input())
for loop in range(nbPaires):
   xMin1 = int(input())
   xMax1 = int(input())
   yMin1 = int(input())
   yMax1 = int(input())
   xMin2 = int(input())
   xMax2 = int(input())
   yMin2 = int(input())
   yMax2 = int(input())
   if ( (xMax2 <= xMin1) or (xMax1 <= xMin2) ) or ( (yMax2 <= yMin1) or (yMax1 <= yMin2) ):
      print("NON")
   else:
      print("OUI") 

Zones de couleurs

Algorithme

Il y a plusieurs manières d'exprimer les conditions. Celle que nous présentons fonctionne comme suit :

  • Si le jeton est entièrement en dehors du rectangle, on affiche « En dehors de la feuille ».

Un jeton est hors de la feuille si son x est inférieur à 0 ou supérieur à 90, ou bien si son y est inférieur à 0, ou supérieur à 70.

  • Sinon, si le jeton est dans une zone rouge, on affiche « Dans une zone rouge ».

Un jeton qui est dans la feuille est dans une zone rouge si son y est supérieur à 60, et que son x est soit entre 15 et 45, soit entre 60 et 85.

  • Sinon, si le jeton est dans une zone bleue, on affiche « Dans une zone bleue ».

Un jeton qui est dans la feuille est dans une zone bleue s'il est dans le rectangle tel que x est entre 10 et 85, et que y est entre 10 et 55, mais qu'il n'est pas dans le petit rectangle jaune tel que x est entre 25 et 50, et y est entre 20 et 45.

  • Sinon, on affiche « Dans une zone jaune ».

En effet, si le jeton n'est ni en dehors du rectangle, ni dans une zone rouge ou bleue, c'est qu'il est dans une zone jaune.

Programme
nbJetons = int(input())
for loop in range(nbJetons):
   x = int(input())
   y = int(input())
   if x < 0 or x > 90 or y < 0 or y > 70:
      print("En dehors de la feuille")
   elif y > 60 and ((x > 15 and x < 45) or (x > 60 and x < 85)):
      print("Dans une zone rouge")
   elif x > 10 and x < 85 and y > 10 and y < 55 and not(x > 25 and x < 50 and y > 20 and y < 45):
      print("Dans une zone bleue")
   else:
      print("Dans une zone jaune")