Formation I.S.N.

Polygone autopavant

paver un carré

On dispose d'un carré de longueur de côté c. On aimerait le découper (le paver) en \( 2^n \) petits carrés de longueur de côté \( \frac{c}{2^n}\).

Proposer une fonction python récursive avec la tortue.

  • documentation
  • cas de base
  • un code

On trouvera la doc sur le module turtle ici.

Un pavage en quatre carrés.


import turtle as tl

def carre(lgCote, n=4) :
	
	if(n > 0) :
		tl.forward(lgCote)
		tl.right(90)
		carre(lgCote, n-1)

def pave(cote, n=4) :
	if(n>0) :
		carre(cote/2)
		tl.forward(cote)
		tl.right(90)
		pave(cote, n-1)

tl.setheading(90) # orientation intiale de la tête : vers le haut		
tl.hideturtle() # on cache la tortue
tl.speed(0)	 # on accélère la tortue
pave(cote = 40)	 
tl.exitonclick() # pour  garder ouverte la fenêtre

import turtle as tl
 
def pave(cote, n) :
	if (n>0) :
		for _ in range(4) :
			pave(cote/2,n-1)
			tl.forward(cote)
			tl.right(90)
		 
 

tl.setheading(90) # orientation intiale de la tête : vers le haut		
tl.hideturtle() # on cache la tortue
tl.speed(0)	 # on accélère la tortue
pave(cote = 200, n = 4 )	 
tl.exitonclick() # pour  garder ouverte la fenêtre

paver un polygone

Adapter la fonction proposée dans le corrigé de la question précédente à un polygone régulier quelconque.

  • documentation
  • un code

On trouvera la doc sur le module turtle ici.

On remplace le carré par un polygone régulier :


import turtle as tl

 
		
def pave(cote, n, p) :
	""" p : nombre de côtés du polygone régulier.
	n : profondeur d'appel
	cote : longueur du côté du polygone pavé. """
	if (n>0) :
		for _ in range(p) :
			pave(cote/2,n-1,p)
			tl.forward(cote)
			tl.right(360/p)
		 
 

tl.setheading(90) # orientation intiale de la tête : vers le haut		
tl.hideturtle() # on cache la tortue
tl.speed(0)	 # on accélère la tortue
pave(cote = 200, n = 6, p = 3 )	 
tl.exitonclick() # pour  garder ouverte la fenêtre