PYTHON. 2 FEUILLE n°33

                                       PYTHON 2 .  FEUILLE n° 33           ALGORITHME

      Thème: 

                         Visualisation avec l'interface Tkinter.

------------------------------------------------------------------------------------

             EXERCICE 1

             Donner un algorithme qui à partir d'un point *  fait apparaître une flèche 

             vers la droite si l'on saisit 1 ou une flèche vers le bas si l'on saisit 0.

-----------------------------------------------------------------------------------------------------

       REPONSE:

                 On peut considérer par exemple:

from random import*
import Tkinter
def mulot():
       print " 1 signifie pour un déplacement vers la droite"
       print " 0 signifie pour un déplacement vers le bas"
       n=input(" indiquer un déplacement ")
       cadre =Tkinter.Tk()
       fond=Tkinter.Canvas(cadre, width=400, height=380, background='white')
       fond.pack()
       fond.create_text(15,20, text="*", font="Arial 16 ", fill="black")
       a=22
       b=15
       if n==1:
             fond.create_line((a,b,a+20,b),fill="red",width=2)
             fond.create_text(a+20,b, text=">", font="Arial 16 ", fill="red")
       else:
              fond.create_line((a,b,a,b+20),fill="red",width=2)
              fond.create_text(a,b+20, text="v", font="Arial 16", fill="red")
       cadre.mainloop()

           On obtient par exemple:

>>> mulot()
1 signifie pour un déplacement vers la droite
0 signifie pour un déplacement vers le bas
indiquer un déplacement 1

                                     fleche-droite.png

                   Ou encore

>>> mulot()
1 signifie pour un déplacement vers la droite
0 signifie pour un déplacement vers le bas
indiquer un déplacement 0

                    fleche-bas.png    

----------------------------------------------------------------------------------------------------- 

   EXERCICE 2

       1. Donner un algorithme qui à partir d'un point A*  fait apparaître dix flèches 

            vers la droite ou vers le bas quand on saisit une liste de dix

            0 ou 1 pour aboutir à un point * B  .

         2. Pour le choix de la liste que vous avez fait combien

             de chemins sont-ils possibles?

-----------------------------------------------------------------------------------------------------------

 REPONSE:

                         On peut considérer :

from random import*
import Tkinter
def mul():
      print " 1 signifie pour un déplacement vers la droite"
      print " 0 signifie pour un déplacement vers le bas"
      L=input(" indiquer une liste de dix 0 ou 1  ")
      cadre =Tkinter.Tk()
      fond=Tkinter.Canvas(cadre, width=400, height=380, background='white')
      fond.pack()
      fond.create_text(15,20, text="A*", font="Arial 16 ", fill="black")
      a=22
      b=15
      for n in L:
            if n==1:
                  fond.create_line((a,b,a+20,b),fill="red",width=2)
                  fond.create_text(a+20,b, text=">", font="Arial 16 ", fill="red")
                  a=a+26
            else:
                   fond.create_line((a,b,a,b+20),fill="red",width=2)
                   fond.create_text(a,b+20, text="v", font="Arial 16", fill="red")
                   b=b+26
      fond.create_text(a,b+3, text="    * B", font="Arial 16 ", fill="black")
      cadre.mainloop()

                    On obtient  par exemple:

>>> mul()
1 signifie pour un déplacement vers la droite
0 signifie pour un déplacement vers le bas
indiquer une liste de dix 0 ou 1  [1,0,1,1,0,0,1,0,0,1]

                   cheminab.png    

       2. La liste ici saisie compte 5 fois le 1, donc ( 10 - 5 fois le 0).

                 Il y a donc autant de chemins de A à B que de façons de choisir 5 places

                 parmi les 10 places de la liste.  

                 Il y en a donc   

                      combinaison.png

                Il y  a  252  chemins de A à B dans le cas où il y a 5 déplacemenst à droite

               et 5 déplacements vers le bas.

-------------------------------------------------------------------------------------

    EXERCICE 3

            Reprendre la première question de l'exercice précédent

            en faisant apparaître un damier vert.

-----------------------------------------------------------------------------------------

   REPONSE:

          On peut considérer:

from random import*
import Tkinter
def moult():
       print " 1 signifie pour un déplacement vers la droite"
       print " 0 signifie pour un déplacement vers le bas"
       L=input(" indiquer une liste de dix 0 ou 1  ")
       cadre =Tkinter.Tk()
       fond=Tkinter.Canvas(cadre, width=400, height=380, background='white')
       fond.pack()
       fond.create_text(15,20, text="A *", font="Arial 16 ", fill="black")
       a=22
       b=15
       for i in range(0,11):
             fond.create_line((22+i*26,15,22+i*26,15+260),fill="green",width=1)
       for j in range(0,11):
             fond.create_line((22,15+j*26,22+260,15+j*26),fill="green",width=1)
       for n in L:
               if n==1:
                     fond.create_line((a,b,a+20,b),fill="red",width=2)
                     fond.create_text(a+20,b, text=">", font="Arial 16 ", fill="red")
                     a=a+26
               else:
                      fond.create_line((a,b,a,b+20),fill="red",width=2)
                      fond.create_text(a,b+20, text="v", font="Arial 16", fill="red")
                      b=b+26
       fond.create_text(a,b+3, text=" * B", font="Arial 16 ", fill="black")  
       cadre.mainloop()

                      On obtient par exemple:

>>> moult()
1 signifie pour un déplacement vers la droite
0 signifie pour un déplacement vers le bas
indiquer une liste de dix 0 ou 1  [1,0,1,1,0,0,1,0,0,1]

                      cheminabetgrille.png

--------------------------------------------------------------------------------------------------------