Partage
  • Partager sur Facebook
  • Partager sur Twitter

-Difficulté sur un probleme France IOI -

La caserne des pompiers

    5 septembre 2019 à 16:40:42

    JulienFrançois1 j'ai fini par trouver la réponse je te donne un élément de l'énoncé qui m'a permis de trouver :

    "Pour chaque paire de zones, votre programme doit écrire "OUI" si les zones s'intersectent et "NON" sinon. Si elles ne font que se toucher sur les bords il doit écrire "NON"."

    Bonne journée et courage ! :)

    • Partager sur Facebook
    • Partager sur Twitter
      5 septembre 2019 à 16:43:45

      C'est bon le code fonctionne ! Merci à toutes et à tous :)
      • Partager sur Facebook
      • Partager sur Twitter
        5 septembre 2019 à 18:26:41

        Entwanne a raison. L'énoncé dit

        Si elles ne font que se toucher sur les bords il doit écrire "NON".

        Donc il faut remplacer les signes < ou > par <= et >= dans les conditions if et elif.

        EDIT: Je n'avais pas vu vos deux derniers messages. :)

        -
        Edité par Dan737 5 septembre 2019 à 18:27:24

        • Partager sur Facebook
        • Partager sur Twitter
          5 septembre 2019 à 19:14:02

          JulienFrançois1 a écrit:

          Puis le code repris de Clara avec le conseil d'Entwanne de mettre des Elif :

          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 xMin1 > xMax2:
                print("NON")
             elif xMax1 < xMin2:
                print("NON")
             elif yMax1 < yMin2:
                print("NON")
             elif yMin1 > yMax2:
                print("NON")
             else:
                print("OUI")

          Au-delà de l'erreur signalée sur les inégalités larges, comme dans les lignes de 11 à 18 on affiche toujours NON, on peut ré-écrire ces huit lignes en juste deux lignes et d'ailleurs, en utilisant une liste ["OUI", "NON"], on peut même réduire les lignes 11-20 en une seule ligne.

          -
          Edité par PascalOrtiz 5 septembre 2019 à 19:14:50

          • Partager sur Facebook
          • Partager sur Twitter
            16 septembre 2019 à 11:41:22

            ```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 xMin1 >= xMax2:
                  print("NON")
               elif xMax1 <= xMin2:
                  print("NON")
               elif yMax1 <= yMin2:
                  print("NON")
               elif yMin1 >= yMax2:
                  print("NON")
               else:
                  print("OUI")```
            Le programme qui fonctionne 
            • Partager sur Facebook
            • Partager sur Twitter
              22 septembre 2019 à 22:12:41

              Le programme qui marche est celui-ci:

              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 xMin1 >= xMax2:

                    print("NON")

                 elif xMax1 <= xMin2:

                    print("NON")

                 elif yMax1 <= yMin2:

                    print("NON")

                 elif yMin1 >= yMax2:

                    print("NON")

                 else:

                    print("OUI")

              • Partager sur Facebook
              • Partager sur Twitter
                23 septembre 2019 à 17:56:08

                Pourtant, j'exclue bien les possibilités d'intersection des rectangles , non?

                nbPair = int(input())

                for i in range(nbPair):
                   ordoMin1 = int(input())
                   ordoMax1 = int(input())
                   ordoMin2 = int(input())
                   ordoMax2 = int(input())
                   absisMin1 = int(input())
                   absisMax1 = int(input())
                   absisMin2 = int(input())
                   absisMax2 = int(input())
                   if ((absisMax1 <= absisMin2) and (absisMax2 <= absisMin1)) and ((ordoMax2 <= ordoMin1) and (ordoMax1 <= ordoMin2)) :
                         print("NON")
                   else:
                      print("OUI")

                • Partager sur Facebook
                • Partager sur Twitter
                  15 octobre 2019 à 19:07:53

                  nzone=int(input())
                  for i in range (0,nzone):
                     xmin=int(input())
                     xmax=int(input())
                     ymin=int(input())
                     ymax=int(input())
                     xmin1=int(input())
                     xmax1=int(input())
                     ymin1=int(input())
                     ymax1=int(input())
                   
                     if (xmax<=xmin1)or (xmin>=xmax1) or (ymax<=ymin1)or (ymin>=ymax1):
                        print("NON")
                    
                     else:
                        print("OUI")
                     nzone=nzone-1

                  voila mon programme marche merci de votre aide j'avais oublie les =.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 décembre 2019 à 19:33:31

                    J'ai repris ton progralle en rajoutant des = et ça marche. Voici le code :
                    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 xMin1 >= xMax2:
                          print("NON")
                       elif xMax1 <= xMin2:
                          print("NON")
                       elif yMax1 <= yMin2:
                          print("NON")
                       elif yMin1 >= yMax2:
                          print("NON")
                       else:
                          print("OUI")
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 janvier 2020 à 14:54:55

                      Voici le programme de correction : 

                      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")
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 juin 2020 à 10:24:10

                        Merci beaucoup tout le monde pour vos conseils!
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 septembre 2020 à 11:55:16

                          Il y a aussi ce programme que je trouve plus simple à comprendre (il fonctionne)

                          def intersec(s1d, s1f, s2d, s2f):
                             if (s2d>s1d and s2d<s1f) or (s2f>s1d and s2f<s1f) or (s1d>s2d and s1d<s2f) or (s1f>s2d and s1f<s2f) :
                                return True
                             else :
                                return False
                          
                          for i in range(int(input())):
                             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 intersec(xMin1, xMax1, xMin2, xMax2) and intersec(yMin1, yMax1, yMin2, yMax2) :
                                print("OUI")
                             else:
                                print("NON")
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 septembre 2020 à 14:15:44

                            j'viens de le faire et ça marchait pas ... j'avais oublié les int() aux input() :p

                            for _ in range(int(input())):
                                
                                ax1,ax2,ay1,ay2,bx1,bx2,by1,by2 = (int(input())for i in range(8))
                                print((bx1>=ax2 or bx2<=ax1 or by1>=ay2 or by2<=ay1) and 'NON' or 'OUI')
                            
                            



                            -
                            Edité par josmiley 19 septembre 2020 à 14:18:53

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Python c'est bon, mangez-en. 

                              20 septembre 2020 à 2:46:23

                              Chuuuuut! Un modérateur rôde dans le coin ...
                              Ça ne ressemble même pas à un déterrage.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Le Tout est souvent plus grand que la somme de ses parties.

                                20 mai 2022 à 19:28:01

                                Il suffit de rajouter des "=" derrière les ">" ou "<" et normalement cela devrait marcher
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 mai 2022 à 10:36:51

                                  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 xMin1 >= xMax2:
                                        print("NON")
                                     elif xMax1 <= xMin2:
                                        print("NON")
                                     elif yMax1 <= yMin2:
                                        print("NON")
                                     elif yMin1 >= yMax2:
                                        print("NON")
                                     else:
                                        print("OUI")
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 mai 2022 à 18:27:20

                                    Bonjour,

                                    En considérant une paire de rectangles définis par des listes des coordonnées des 4 coins, est-ce que l'on pourrait aussi chercher si l'un des coins d'un rectangle est à l'intérieur de l'autre ?

                                    def point_dans_rectangle(x,y,rectangle):
                                    
                                        n = 0
                                        for i in range(len(rectangle)-1):
                                            if ((rectangle[i][1] <= y and rectangle[i+1][1] > y) or (rectangle[i][1] > y and rectangle[i+1][1] <= y)):
                                                vt = (y - rectangle[i][1]) / float(rectangle[i+1][1] - rectangle[i][1])
                                                if(x < (rectangle[i][0] + vt * (rectangle[i+1][0] - rectangle[i][0]))): n += 1
                                    
                                        return(n % 2)
                                    
                                    rectangle_1 = [[10,10],[20,10],[20,20],[10,20]]
                                    rectangle_2 = [[15,15],[25,15],[25,25],[15,25]]
                                    
                                    f = False
                                    for k in range(len(rectangle_2)):
                                        x,y = rectangle_2[k][0], rectangle_2[k][1]
                                        if(point_dans_rectangle(x, y, rectangle_1)):
                                            print('OUI')
                                            f = True
                                    
                                    if(not f): print('NON')



                                    -
                                    Edité par Phil_1857 27 mai 2022 à 18:28:31

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      21 août 2022 à 23:48:53 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                                        22 août 2022 à 1:30:36

                                        @MathisJupin:
                                        Je te suggère d'aller voir la solution proposée par PascalOrtiz.

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Le Tout est souvent plus grand que la somme de ses parties.

                                          15 octobre 2022 à 11:55:25 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                                            30 décembre 2022 à 11:09:54

                                            bonjour,

                                            Il suffit de mettre >=  et  ou  <= pour chaque test. 

                                            Au lieu de se servir de Elif il suffit de rajouter or à la première condition.

                                            if xMin1 >= xMax2 or xMax1 <= xMin2 or yMax1 <= yMin2 or yMin1 >= yMax2:
                                                  print("NON")
                                              
                                            else:
                                                  print("OUI")

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              30 décembre 2022 à 19:04:48

                                              CyrilleGayvallet1 a écrit:

                                              bonjour,

                                              Il suffit de mettre >=  et  ou  <= pour chaque test. 

                                              Au lieu de se servir de Elif il suffit de rajouter or à la première condition.

                                              if xMin1 >= xMax2 or xMax1 <= xMin2 or yMax1 <= yMin2 or yMin1 >= yMax2:
                                                    print("NON")
                                                
                                              else:
                                                    print("OUI")


                                              Oui, et c'est d'ailleurs exactement comme cela que fait le corrigé. C'est une très élégante solution car au lieu de chercher quand les rectangles s'intersectent, on cherche plutôt quand les rectangles NE s'intersectent PAS.
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              -Difficulté sur un probleme France IOI -

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                              • Editeur
                                              • Markdown