Partage
  • Partager sur Facebook
  • Partager sur Twitter

Casernes de Pompier France IOI (Python)

Demande un peu d'aide

    30 mars 2020 à 18:47:20

    Bonjour, 

    Je suis bloqué sur ce sujet que je dois faire dans le cadre de devoir, je n'ai aucune idée de comment m'y prendre. 

    Merci d'avance pour votre aide.

    Sujet : 

    La ville comprend de nombreuses casernes de pompiers et chacune a sa propre zone d'intervention qui lui est réservée. Cependant en regardant ces zones il vous semble qu'elles ne sont pas très bien choisies car parfois elles se recoupent alors que certains endroits de la ville sont en dehors de toutes les zones et donc ne sont pas protégées par les pompiers. Vous décidez d'aider le maire à mieux organiser l'action des pompiers.

    Ce que doit faire votre programme :

    Votre programme doit lire la description de plusieurs paires de zones rectangulaires, et pour chacune, déterminer si les deux rectangles s'intersectent.

    Vous devez lire un premier entier, le nombre de paires de zones que votre programme devra tester. Ensuite, pour chaque paire possible, deux zones rectangulaires et parallèles aux axes vous sont données l'une après l'autre. Chaque zone est décrite par 4 entiers : son abscisse minimale et maximale puis son ordonnée minimale et maximale.

    Sur cet exemple, la zone du bas est donc décrite par les 4 entiers (1, 6, 1, 5) et l'autre par (4, 9, 3, 8) :

    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".

    • Partager sur Facebook
    • Partager sur Twitter
      31 mars 2020 à 3:29:46

      Le site France IOI ne donne pas la solution à vos problèmes?
      Tu précises que c'est en Python alors que c'est la catégorie "langage C"
      Petit truc:
      Vérifier que les abscisses des deux rectangles se recoupent (les deux intervalles)
      amin1 < amin2 < amax1 ou amin2 < amin1 < amax2
      Faire la même chose pour les ordonnées.
      Si c'est vrai pour les deux cas simultanément, les rectangles se recoupent.
      Avec plus de tests on peut savoir si un rectangle est partiellement ou totalement inclus dans l'autre.
      Ou bien s'ils sont partiellement ou totalement adjacents.

      -
      Edité par PierrotLeFou 31 mars 2020 à 4:03:35

      • Partager sur Facebook
      • Partager sur Twitter

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

        31 mars 2020 à 10:28:13

        Bonjour,

        Déplacement vers un forum plus approprié

        Le sujet est déplacé de la section Langage C vers la section Langage Python

        • Partager sur Facebook
        • Partager sur Twitter
          31 mars 2020 à 11:57:17 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


            31 mars 2020 à 11:59:21

            Bonjour,

            Merci de colorer votre code à l'aide du bouton Code

            Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: python;">Votre code ici</pre>.

            Merci de modifier votre message d'origine en fonction.

            Liens conseillés

            • Partager sur Facebook
            • Partager sur Twitter
              31 mars 2020 à 16:38:22


              SylvetteXx a écrit:

              Bonjour, 

              Je suis bloqué sur ce sujet que je dois faire dans le cadre de devoir, je n'ai aucune idée de comment m'y prendre. 

              Ta eu des cours de Python je suppose ? donc tu dois pouvoir commencer un minimum.

              Montre nous déjà le code que tu as écris.

              • Partager sur Facebook
              • Partager sur Twitter
                2 avril 2020 à 16:13:53

                Je n'ai pas eu vraiment de cours sur Python.

                Mais, voici mon code : 

                nbzone = int(input())
                amin1 = int(input())
                amax1 = int(input())
                amin2 = int(input())
                amax = int(input())
                omin1 = int(input())
                omax1 = int(input())
                omin2 = int(input())
                omax2 = int(input())
                for loop in range(nbzone) :
                   if (amin1 < amin2 < amax1) or (amin2 < amin1 < amax2) :
                      if (omin1 < omin2 < omax1) or (omin2 < omin1 < omax2) :
                         print("OUI")
                    else :
                       print("NON")



                -
                Edité par SylvetteXx 2 avril 2020 à 16:16:30

                • Partager sur Facebook
                • Partager sur Twitter
                  4 avril 2020 à 22:43:22

                  Bonsoir SylvetteXx,

                  Vous ne pouvez pas mettre plusieurs < à la suite, il faut faire plusieurs conditions à la suite : 

                  if (amin < amin2) and (amin2 < amax1) #etc.

                  De plus, n'oubliez pas de mettre <= !

                  Je me souviens avoir galéré sur celui-là aussi. 

                  Essayez de faire  des schémas et réfléchir à la logique de la chose avant de vous lancer et de vous perdre

                  Bonne soirée,

                  Romain.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 avril 2020 à 1:04:26

                    Romainj78 a écrit:

                    Vous ne pouvez pas mettre plusieurs < à la suite, il faut faire plusieurs conditions à la suite : 

                    if (amin < amin2) and (amin2 < amax1) #etc.


                    Bien au contraire, et c'est un des avantages de Python par rapport à Java ou C, c'est qu'on peut écrire des encadrements 

                    print(42 < 81 < 100 <= 512)
                    print(42 < 81 < 100 < 100)
                    True
                    False

                    On peut même écrire des encadrements très curieux :

                    print(42 > 17 < 38 == 42 - 4 > 31)

                    -
                    Edité par PascalOrtiz 5 avril 2020 à 1:04:42

                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 avril 2020 à 14:46:33

                      Bonjour Romainj78 et PascalOrtiz,

                      Merci pour vos conseils.

                      Cependant, France IOI me met que ma ligne 14 est fausse mais je ne comprend pas pourquoi.

                      nbzone = int(input())
                      amin1 = int(input())
                      amax1 = int(input())
                      amin2 = int(input())
                      amax = int(input())
                      omin1 = int(input())
                      omax1 = int(input())
                      omin2 = int(input())
                      omax2 = int(input())
                      for loop in range(nbzone) :
                         if (amin1 <= amin2 <= amax1) or (amin2 <= amin1 <= amax2) :
                            if (omin1 <= omin2 <= omax1) or (omin2 <= omin1 <= omax2) :
                               print("OUI")
                         else : 
                             print("NON")

                      Merci encore.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 avril 2020 à 14:59:08

                        En soumettant ton code, il ne me parle pas de ligne 14, il me dit juste que ça ne donne pas la bonne réponse.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 avril 2020 à 23:55:25

                          Bonsoir SylvetteXx, 

                          Je ne vois pas pourquoi la ligne 14 serait fausse, pour moi elle est correcte. 

                          Pourriez-vous nous montrer l’erreur affichée s’il-vous plaît ?

                          Néanmoins, il y a quand même une erreur dans votre code : il faut mettre l’affectation des variables amin1 amax1 etc dans votre boucle car l’on souhaite tester nbzones fois. 

                          Bonne soirée, 

                          Romain.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 avril 2020 à 1:20:51

                            Romainj78 a écrit:

                            Néanmoins, il y a quand même une erreur dans votre code : il faut mettre l’affectation des variables amin1 amax1 etc dans votre boucle car l’on souhaite tester nbzones fois. 

                            En effet mais cela ne suffira pas à faire passer le code.

                            L'exercice est beaucoup moins simple qu'il n'y paraît. Il a déjà été discuté sur ce forum

                            • Partager sur Facebook
                            • Partager sur Twitter
                              7 avril 2020 à 9:39:39

                              Bonjour Pascal et Romain,

                              J'ai finalement réussi !!! 

                              Merci beaucoup pour votre aide !

                              (pour la ligne 14, je n'ai rien changé mais ça arrêter de me mettre une erreur de formulation)



                              -
                              Edité par SylvetteXx 8 avril 2020 à 9:19:56

                              • Partager sur Facebook
                              • Partager sur Twitter
                                8 avril 2020 à 9:21:16

                                PascalOrtiz a écrit: "Tu es en train de spoiler !"

                                Voilà s'est retiré !



                                • Partager sur Facebook
                                • Partager sur Twitter
                                  8 avril 2020 à 10:36:20

                                  SylvetteXx a écrit:

                                  PascalOrtiz a écrit: "Tu es en train de spoiler !"

                                  Voilà s'est retiré !




                                  merci
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Casernes de Pompier France IOI (Python)

                                  × 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