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,
Question
"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,
1 Réponse
-
1. Réponse Hasyata
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à !
Autres questions