Dessiner des arbres

Rappels sur la 🐢

On rappelle ci-dessous les instructions utiles du module turtle.

Appel Rôle
hideturtle() Cache la tortue.
speed(n) Définit la vitesse de l'animation.
n est un entier entre 1 (lent) et 10 (rapide).
animation(s) Autorise ou non les animations.
s est soit 'on' (avec animations, valeur par défaut)
soit 'off' (sans animations).
penup() Lève le crayon : les déplacements de la tortue ne sont plus dessinés.
pendown() Baisse le crayon : les déplacements de la tortue sont dessinés.
heading() Renvoie la direction vers laquelle pointe la tortue sous la forme d'une mesure d'angle en degrés.
setheading(d) Définit la direction vers laquelle pointe la tortue.
d est une mesure d'angle en degrés.
position() Renvoie la position de la tortue sous la forme d'un couple de nombres (x, y).
goto(x, y) La tortue se déplace à la position (x, y).
x et y sont des nombres.
left(a) La tortue tourne sur elle-même vers la gauche de a degrés.
a est un nombre.
right(a) La tortue tourne sur elle-même vers la droite de a degrés.
a est un nombre.
forward(p) La tortue avance de p pixels.
p est un nombre.

🏎 Dans CodEx, il est possible d'augmenter la vitesse jusqu'à speed(100) ! 🏎

On souhaite dessiner des arbres en utilisant le module turtle.

Arbre

Cet arbre a une structure récursive : les sous-arbres de droite et de gauche ont, à un niveau de profondeur près, la même forme que l'arbre entier.

Sous-arbre droit Sous-arbre gauche

Cette observation étant faite, on peut définir un algorithme de construction :

  1. Tracer un trait de la longueur souhaitée ;
  2. Si cette longueur est suffisamment grande :

  3. Prendre note de la position actuelle de la tortue et de la direction dans laquelle elle pointe ;

  4. Tourner la tortue de l'angle souhaité vers la droite et dessiner un sous-arbre ;
  5. Revenir au point et à la direction notés à l'étape 2 ;
  6. Tourner la tortue de l'angle souhaité vers la gauche et dessiner un sous-arbre.

On précise quelques informations :

  • la longueur de départ est de 100 pixels ;
  • à chaque étape, la longueur est multipliée par 0.75 ;
  • l'angle de rotation du départ est de 60 degrés ;
  • à chaque étape, l'angle de rotation est multiplié par 0.7 ;
  • on ne construit un sous-arbre que si la longueur est strictement supérieure à 20 pixels.

Vous devez donc compléter le script ci-dessous permettant de construire l'arbre souhaité. La construction sera lancée par l'appel incomplet arbre(..., ...) à la ligne 15.

La fonction modele dessine à l'écran l'arbre attendu. Vous pouvez l'exécuter ou non !

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.1280135tf4)2rR3,sa-o iug0x8m1P6p*nl7h.e=céy:v9(w;S/bdk050V0H0c0m0q0D0l0p0J0D0m0l0l0I010c0q0A010406050l0r0w0w0m0h0L040S0o0D0r0;0o0C050T0{0}0 110_0A041a1h051k0T1k1m1h0_0V0q0N0)0+0-0/0F0q0s0F0D1A0F0c0@050!0U0D0H1v0,0.011z1B1D1B0c1J1L1H0c0U0o0V111I0h1i0c0F0)140l0A0m0C0/0g011N1x010d0$0H0C0m0w0H1H1/1;1_1P1|1L1 210@0a0p0y0h0o0A0o0l0q170C0p0Y1-0h0h0H0J2m1a240C1i0T1+2z0c1)1(1*0V260/1D0C1~2j1H1s1u0*1O2J0q2L0C1#1t1H0A2s1i2x2z2%0`1:2n2R1`2W0h0~0D0@0p0x2w2+0^2*252-1P2/2;2?0g2_1;2{2x2I01300m2=040p0j342y0_372~0/3a3c0p0e3g362+383m2?0b3q3i3s3k390o2:3b2?0z3x2|2,1w2 3C313d0E3H3j3K3l3M3E3d0v3Q3z3S3B3D3n0O3Y2}3!3u040x0t3)3J2S3#3N0x2^1b2`3y3*3=3,0x333`353|3;2.3U3c0x3f423h3I3t470@0x3p4b3r3}463$4g3w4j444e4n3-3G4q4d3A3 3P4w3R3~4f3-3X4B3Z4D4t0x3(4H4l3L4t0g3/4N454P3N0g3_2%4r4y4E0g414Z4x3+4$4a4)4C4m4W4i2)1n2#1a2P2C0V2G380J1#221i4`1l4^4?2)4 0Y2$4I1`0W0C0@0d2g0w3q4*3=0Q2?5j4/2 5e040c0r0h0c1L5o5b1P5m3d5y4O0/5d0@0q0w2i5v3q0p5k1`0o0@0B3x4!3!0J0x0@030p0i0K0s0+0s0H0(2U2l0q0m0r0u3:3t0@1/0H0H0V5D4U0/0?040P5|380w0q4g4S2)5p5~0@0f5M0p6e6f5O1P5W5Y0p0+0p0c3C5t1M0l1M0V0K0A0+0J1M0h0m0A0q0Y210C0c5=4y0@0A1~0r0A623A5 0P6c4j6f6V6e6h0/6j045Z1L0)6A0L180p5*0c6l0H0N0K6I3+0@0s0o6o6P3!6R6|3=640@672`6Y015 0k5M755Q040n6 1`71044R7335755 6T2%6g69016!6$0m6n6p0r6r6t6v6x1M1~0p0U0,2o1M6m1|0s5u0H6?3~5@0Z0F0H0m1s0C0s7e1P6~4j757g0O7j2y7l6b6d757s6l7u6o5v7x0p2i2U0c1M0N0H0h0(6%0F5/6H4T5?046L0C0V0o0Q197#7q6R7n2`6W6X7q7/6%0J6)6+6-7E0#0-6=4q5U3=0W0@0Y0d7Y0/5B5N8e5z3l0d0@0 0U2s8D760@618H5E390@0D187L0H5u8P77797q5r1;5%7N8T5}8Q040f0M3x6V755r0d3C0Q0 5{8.387!688I8V048X7W7x8#906Q7,4q8^7q8z040q8C6U8_8W8Y990h8(947b020s0c0R9r8U7g4R8$0@8?9e8j5N8)0@5;9b6}0@789l9I040L9y8/7b0I9T862i2k2v9L3=8g8@9G9m048 7o7a0@9W9P945r7S7U2U7X9$1`9(9F8j9+0h1E84938U92749Q8+5x9|7Z9d4Z9G9H9?8L0h8N8-a58/a77k9Q978Z9a9.7q7b5S9=9z8K040t0G0E4pan919N9X6J04aaam8i9/04ayav940waBaD4AaH9c8;9)a09Q886N9C608h43ag9+6s1+7T7V9{aZ9M608P5r9-a8947ma$6W9+6_6{ac6aa{b7959Ka_9%aJaz8/5r9Sbab19 b3a(1~8a8ca+6Sb29fai960H0da4a a68Ra|8L7Wabbd9}ae3{a/a9ak8ObkbDba5ras9paK3!axbW70aWaEaGbBaobfaT8U8*bGaO35ah8UbYbg63b#aYb(aIa#8w9+8MbPbIadb9c20/7g3.7)5abC049Ob+8/7g0zc97+b}4)0T580H2z2!co4_1t4{2C2E2A1!1$2C0m1Kcr0T4`0_cE0Z0#0%04.

Votre arbre

Votre tracé sera ici

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.1280135tf4)2rR3,sa-o iug0x8m1P6p*nl7h.e=céy:v9(w;S/bdk050V0H0c0m0q0D0l0p0J0D0m0l0l0I010c0q0A010406050l0r0w0w0m0h0L040S0o0D0r0;0o0C050T0{0}0 110_0A041a1h051k0T1k1m1h0_0V0q0N0)0+0-0/0F0q0s0F0D1A0F0c0@050!0U0D0H1v0,0.011z1B1D1B0c1J1L1H0c0U0o0V111I0h1i0c0F0)140l0A0m0C0/0g011N1x010d0$0H0C0m0w0H1H1/1;1_1P1|1L1 210@0a0p0y0h0o0A0o0l0q170C0p0Y1-0h0h0H0J2m1a240C1i0T1+2z0c1)1(1*0V260/1D0C1~2j1H1s1u0*1O2J0q2L0C1#1t1H0A2s1i2x2z2%0`1:2n2R1`2W0h0~0D0@0p0x2w2+0^2*252-1P2/2;2?0g2_1;2{2x2I01300m2=040p0j342y0_372~0/3a3c0p0e3g362+383m2?0b3q3i3s3k390o2:3b2?0z3x2|2,1w2 3C313d0E3H3j3K3l3M3E3d0v3Q3z3S3B3D3n0O3Y2}3!3u040x0t3)3J2S3#3N0x2^1b2`3y3*3=3,0x333`353|3;2.3U3c0x3f423h3I3t470@0x3p4b3r3}463$4g3w4j444e4n3-3G4q4d3A3 3P4w3R3~4f3-3X4B3Z4D4t0x3(4H4l3L4t0g3/4N454P3N0g3_2%4r4y4E0g414Z4x3+4$4a4)4C4m4W4i2)1n2#1a2P2C0V2G380J1#221i4`1l4^4?2)4 0Y2$4I1`0W0C0@0d2g0w3q4*3=0Q2?5j4/2 5e040c0r0h0c1L5o5b1P5m3d5y4O0/5d0@0q0w2i5v3q0p5k1`0o0@0B3x4!3!0J0x0@030p0i0K0s0+0s0H0(2U2l0q0m0r0u3:3t0@1/0H0H0V5D4U0/0?040P5|380w0q4g4S2)5p5~0@0f5M0p6e6f5O1P5W5Y0p0+0p0c3C5t1M0l1M0V0K0A0+0J1M0h0m0A0q0Y210C0c5=4y0@0A1~0r0A623A5 0P6c4j6f6V6e6h0/6j045Z1L0)6A0L180p5*0c6l0H0N0K6I3+0@0s0o6o6P3!6R6|3=640@672`6Y015 0k5M755Q040n6 1`71044R7335755 6T2%6g69016!6$0m6n6p0r6r6t6v6x1M1~0p0U0,2o1M6m1|0s5u0H6?3~5@0Z0F0H0m1s0C0s7e1P6~4j757g0O7j2y7l6b6d757s6l7u6o5v7x0p2i2U0c1M0N0H0h0(6%0F5/6H4T5?046L0C0V0o0Q197#7q6R7n2`6W6X7q7/6%0J6)6+6-7E0#0-6=4q5U3=0W0@0Y0d7Y0/5B5N8e5z3l0d0@0 0U2s8D760@618H5E390@0D187L0H5u8P77797q5r1;5%7N8T5}8Q040f0M3x6V755r0d3C0Q0 5{8.387!688I8V048X7W7x8#906Q7,4q8^7q8z040q8C6U8_8W8Y990h8(947b020s0c0R9r8U7g4R8$0@8?9e8j5N8)0@5;9b6}0@789l9I040L9y8/7b0I9T862i2k2v9L3=8g8@9G9m048 7o7a0@9W9P945r7S7U2U7X9$1`9(9F8j9+0h1E84938U92749Q8+5x9|7Z9d4Z9G9H9?8L0h8N8-a58/a77k9Q978Z9a9.7q7b5S9=9z8K040t0G0E4pan919N9X6J04aaam8i9/04ayav940waBaD4AaH9c8;9)a09Q886N9C608h43ag9+6s1+7T7V9{aZ9M608P5r9-a8947ma$6W9+6_6{ac6aa{b7959Ka_9%aJaz8/5r9Sbab19 b3a(1~8a8ca+6Sb29fai960H0da4a a68Ra|8L7Wabbd9}ae3{a/a9ak8ObkbDba5ras9paK3!axbW70aWaEaGbBaobfaT8U8*bGaO35ah8UbYbg63b#aYb(aIa#8w9+8MbPbIadb9c20/7g3.7)5abC049Ob+8/7g0zc97+b}4)0T580H2z2!co4_1t4{2C2E2A1!1$2C0m1Kcr0T4`0_cE0Z0#0%04.

Votre arbre

Votre tracé sera ici