Bonjour j'ai un algorithme à faire pour demain, je suis en terminale spé maths.
"Trois prisonniers enchainés en des points éloignés de la cour d'un pénitencier, préparent un plan pour s'évader. A mi chemin des de deux se trouve un vieux chien de garde, tenant dans sa gueule le trousseau de clés.
Chacun des prisonniers agite alors un bel os pour attirer le chien, qui choisit au hasard de se diriger lentement vers l'un d'entre eux. Mais arrivé à mi chemin, fatigué, le vieux chien se couche et creuse un trou.
Les prisonniers agitent alors de plus belle leurs appâts: le chien se réveille et avance a nouveau au hasard vers l'un des deux. Arrivé a la moitié du chemin il s'arrête encore et fait un trou... et ainsi de suite un très grand nombre de fois.
Construire et programmer un algorithme qui permet d'obtenir une vue aérienne de la figure obtenue avec les trous progressivement creusés par le chien."
Voici le début du programme:

import matplotlib.pyplot as pet
from math import*
from random import*

def(n):
xA,yA=0,0
xB,yB=0.5,sqrt(3)/2
xC,yC=1,0
xm,yM=(xA+xB)/2,(yA+yB)/2
X,Y= {xA,xB,xC,xM},{yA,yB,yC,yM}

La figure doit ressembler au triangle de Sierpinski. Pouvez-vous m'aider?
Cordialement,


Sagot :

Bonjour !

Voilà, un code simple qui montre les trous du chien après n déplacements.

_________________________________________

import matplotlib.pyplot as plt

from math import*

from random import*

def dessine(n):

  xA,yA=0,0

  xB,yB=0.5,sqrt(3)/2

  xC,yC=1,0

  xM,yM=(xA+xB)/2,(yA+yB)/2

  X,Y= [xA,xB,xC,xM],[yA,yB,yC,yM] # servira à dessiner le résultat

  for i in range(n):

     prisonniers = [(xA, yA), (xB, yB), (xC, yC)]

     heureux = randint(0,2)

     cibleX, cibleY = prisonniers[heureux] # le choix du chien

     xM = (xM + cibleX) / 2

     yM = (yM + cibleY) / 2 # le chien se déplace.

     X.append(xM)

     Y.append(yM) # on ajoute le trou qu'a fait le chien

  plt.plot(X, Y, "go")

  plt.show() # on dessine le résultat

dessine(1000) # en vrai essaye aussi dessine(4000) s'est plus marqué.

_________________________________________

En effet, ça fait un triangle de Sierpinski, mais j'aimerais bien savoir pourqoi.

Voilà !

View image HASYATA