« Mathématiques avec Python et Ruby/Une tortue qui accélère la résolution de problèmes » : différence entre les versions

aucun résumé de modification
Aucun résumé des modifications
Aucun résumé des modifications
from random import *
 
speed=01000
hideturtle()
penup()
 
# ''A'' (comme ''avance'') pour ''fd(100)'';
# ''gp'' (comme ''gaucheplus'') pour ''lt(60)'';
# ''dm'' (comme ''droitemoins'') pour ''rt(120)''.
 
La traduction se fait par une ''RegExp'', qui, tel un chien de chasse, cherche toutes les occurences d'une lettre, et les remplace par le texte correspondant.
from re import *
 
programme='AdAdAdAmAmAm'
programme=sub('A','fd(100); ',programme)
programme=sub('dm','rt(120); ',programme)
exec(programme)
</source>
 
Le remplacement des lettres mnémotechniques par des instructions en Python est à l'image de ce que fait un [[w:compilateur|compilateur]] comme celui de Python. Avec ça, au moins, la recette pour dessiner un triangle est facile à retenir: ''avancer; tourner; avancer; tourner; avancer; tourner'', étant entendu que chaque fois qu'on avance, c'est de 100 pixels, et chaque fois qu'on tourne, c'est de 120° vers la droite.
 
==Modification du script==
 
Pour transformer le triangle en flocon, on doit remplacer chaque instruction ''avancer'' par la séquence ''avancer; gauche; avancer; droite; avancer; gauche; avancer''. Du moment que chaque fois qu'on avance, c'est du même nombre de pixels (par exemple 81) et chaque fois qu'on tourne à gauche, c'est de 60° et chaque fois qu'on tourne à droite, c'est de 120°. Pour obtenir cet effet, il suffit de remplacer chaque ''A'' par ''ApAmApA'':
 
<source lang="python">
from turtle import *
from re import *
 
programme='AmAmAm'
 
programme=sub('A','ApAmApA',programme)
 
programme=sub('A','fd(81); ',programme)
programme=sub('m','rt(120); ',programme)
programme=sub('p','lt(60); ',programme)
exec(programme)
</source>
 
Ce script dessine bien une étoile:
 
[[Fichier:Kochpy1.svg|center]]
 
==Dessin du triangle de Von Koch==
 
Pour finir le dessin du flocon fractal, il suffit d'itérer le remplacement de chaque ''A'' par ''ApAmApA'':
 
<source lang="python">
from turtle import *
from re import *
 
programme='AmAmAm'
 
for n in range(4):
programme=sub('A','ApAmApA',programme)
 
programme=sub('A','fd(2); ',programme)
programme=sub('m','rt(120); ',programme)
programme=sub('p','lt(60); ',programme)
exec(programme)
</source>
 
Ce script dessine ceci en 9 lignes de Python:
 
[[Fichier:Kochpy1.svg|center]]
 
=Voir aussi=
1 277

modifications