Dessiner le flocon de Koch

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, à l'aide du module turtle, le fameux flocon de Koch.

Le flocon à l'étape 5

Le flocon à l'étape 5

Sous ses aspects très élaborés, cette figure peut se construire de façon récursive à partir d'un simple triangle équilatéral !

Quelques étapes

Etape 0 Etape 1 Etape 2 Etape 3

1. La courbe de Koch

Avant de construire le flocon, construisons la courbe de Koch :

Une courbe à l'étape 5

Cette courbe peut se construire de façon récursive :

  • on se donne un segment de départ de longueur donnée ;
  • pour obtenir l'étape suivante, on partage ce segment en quatre segments trois fois plus petits ;
  • Répéter l'étape précédente sur chaque petit segment permet de construire l'étape suivante...

D'une courbe à l'autre

Vous devez donc écrire la fonction courbe qui prend deux paramètres :

  • longueur : un entier positif indiquant la largeur totale de la courbe à construire ;
  • profondeur : le degré de profondeur de la construction.

Cette fonction construit la figure comme l'illustrent les exemples ci-dessous :

  • courbe(100, 0) construit l'étape 0 (un unique segment de 100 pixels de long) ;

  • courbe(150, 1) construit l'étape 1 (quatre segments mesurant chacun 50 pixels de long) ;

  • courbe(90, 2) construit l'étape 2 (seize segments mesurant chacun 10 pixels de long).

La fonction modele dessine à l'écran la courbe attendue (longueur=300, etape=5). 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

.128013s3o_8bcdufvg/0ly n7apSr1-meR,(P2=4:twki95h*x)é6050i0B0K0u0N0p0b0r0h0p0u0b0b0H010K0N0v010406050b0j0A0A0u0x0q040w0d0p0j0:0d0s050n0`0|0~100^0v04191g051j0n1j1l1g0^0i0N0l0(0*0,0.0Q0N0m0Q0p1z0Q0K0?050Z0g0p0B1u0+0-011y1A1C1A0K1I1K1G0K0g0d0i101H0x1h0K0Q0(130b0v0u0s0.0G011M1w010k0#0B0s0u0A0B1G1.1:1^1O1{1K1~200?0a0r0F0x0d0v0d0b0N160s0r0X1,0x0x0B0h2l19230s1h0n1*2y0K1(1%1)0i250.1C0s1}2i1G1r1t0)1N2I0N2K0s1!1s1G0v2r1h2w2y2$0_1/2m2Q1_2V0x0}0p0?0r0y2v2*0@2)242,1O2.2:2=0G2^1:2`2w2H012 0u2;040r0c332x0^362}0.393b0r0I3f352*373l2=0P3p3h3r3j380d2/3a2=0V3w2{2+1v2~3B303c0t3G3i3J3k3L3D3c0f3P3y3R3A3C3m0O3X2|3Z3t040y0o3(3I2R3!3M0y2@1a2_3x3)3;3+0y323_343{3:2-3T3b0y3e413g3H3s460?0y3o4a3q3|453#4f3v4i434d4m3,3F4p4c3z3~3O4v3Q3}4e3,3W4A3Y4C4s0y3%4G4k3K4s0G3.4M444O3M0G3^2$4q4x4D0G404Y4w3*4#494(4B4l4V4h2(1m2!192O2B0i2F370h1!211h4_1k4@4=2(4~0X2#4H1_0M0s0?0k2f0A3p4)3;0L2=5i4.2~5d040K0j0x0K1K5n5a1O5l3c5x4N0.5c0?0N0A2h5u3p0r5j1_0d0?0R3w4Z3Z0h0y0?030r0C0U0m0*0m0B0%2T2k0N0u0j0S3/3s0?1.0B0B0i5C4T0.0=040E5{370A0N0?0P4R2(5o5}0?0T5L0r6e6e5N1O5V5X0r0*0r0K3B5s1L0b1L0i0U0v0*0h1L0x0u0v0N0X200s0K5;4x0?0v1}0j0v613z5~0E6c4i6f6V5M69016j045Y1K0(6A0q170r5)0K6l0B0l0U6I3*0?0m0d6o6P3Z6R6|3;5P040z6 1_634n672_6h6a040D5L7a01760478347f5~6T2$6g6Y6!6$0u6n6p0j6r6t6v6x6r5t6l7t0m5.0h0Q6t1L6m1{0m5t0B6?3}6K1}0i0d0L184i7l0?6S6d6V7f7r6/6(0u6*2m6-0r0g0!0,6=4p065T3;0M0?0X0k745z5m7Y6Y0s0k0?4~5t0g7P835y7b608c5D380?0p177N0B5t807b7d6U7f5q0Y6B8b688d017m0J3w7%6Y7|040N7 8s840?8v6L7e6Y710H0H8P8z7h7j2x7Z048C4p6W6f8t5e3B0L0~5`8g5|8A7!8p8i048k0s8m8o8/377m8D8(8F8M0$8x796Y5~8#4Y8%7p8z5q8_8{0x0e0`9h4,2_6X8z8R8U8h9e8l7w8|7o7f710n9q8:7h9l429b9n9r870d89957k978=8}6J8^9t8n9h9j0e9D8Y9N7c9A5=048N9L2x9G8:71738K8V643,8?8 8$9b8)8^0B0k6H9P6}9O8y8h7h0V8X598h9@9a9_8L04880x8a9?a1969d8j9S5t9ian9Xa78:5~8r9wac9(9#3z9-ay3Z7h4Xaja86b908%9`0x1D9~a2asai9M9:4f4Qah047n3`9F9`aeag9 3;6~a%2-al8`9u9UapaVau9m9`ax9/8haAa_9B9;aEaRaGaWaI6W9`1K9}aV8faO629;a5aVaX9Eabakad9Jaf9)ar8~aQ9Ybi9fa.ao9ka;aB7R9%0Z8Oa|37a{avaS9=a*1Oa93`7_a!bka$ba6Qbpbn3z9C0oa68Za=349+bb65be3G0n570B2y2Zb,4^1s4`2B2D2z1Z1#2B0u1Jb/0n4_0^b 8v0#0b04.

Votre courbe

Votre tracé sera ici

2. Le flocon de Koch

Maintenant que vous savez construire une courbe de Koch, il vous reste à construire l'ensemble du flocon de Koch ! Un simple code itératif suffit : de la même façon qu'un triangle est formé de trois segments consécutifs, le flocon est formé de trois courbes consécutives.

Vous pouvez utiliser la fonction courbe qui est déjà chargée en mémoire dans sa version corrigée.

Vous devez donc écrire la fonction flocon qui prend deux paramètres :

  • longueur : un entier positif indiquant la largeur totale de la figure à construire ;
  • profondeur : le degré de profondeur de la construction.

Cette fonction construit la figure comme expliqué ci-dessous :

  • flocon(100, 0) construit un triangle équilatéral de 100 pixels de côté ;
  • flocon(300, 5) construit le flocon souhaité : chaque segment a été découpé 5 fois.

Encore une fois, la fonction modele dessine à l'écran la figure attendue.

###(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

.128013s3o_8bcdufvg/0ly n7apSr1-meR,(P2=4:twki95h*x)é6050i0B0K0u0N0p0b0r0h0p0u0b0b0H010K0N0v010406050b0j0A0A0u0x0q040w0d0p0j0:0d0s050n0`0|0~100^0v04191g051j0n1j1l1g0^0i0N0l0(0*0,0.0Q0N0m0Q0p1z0Q0K0?050Z0g0p0B1u0+0-011y1A1C1A0K1I1K1G0K0g0d0i101H0x1h0K0Q0(130b0v0u0s0.0G011M1w010k0#0B0s0u0A0B1G1.1:1^1O1{1K1~200?0a0r0F0x0d0v0d0b0N160s0r0X1,0x0x0B0h2l19230s1h0n1*2y0K1(1%1)0i250.1C0s1}2i1G1r1t0)1N2I0N2K0s1!1s1G0v2r1h2w2y2$0_1/2m2Q1_2V0x0}0p0?0r0y2v2*0@2)242,1O2.2:2=0G2^1:2`2w2H012 0u2;040r0c332x0^362}0.393b0r0I3f352*373l2=0P3p3h3r3j380d2/3a2=0V3w2{2+1v2~3B303c0t3G3i3J3k3L3D3c0f3P3y3R3A3C3m0O3X2|3Z3t040y0o3(3I2R3!3M0y2@1a2_3x3)3;3+0y323_343{3:2-3T3b0y3e413g3H3s460?0y3o4a3q3|453#4f3v4i434d4m3,3F4i1i2!192O2B0i2F370h1!211h4z1k4x2(4v4E0X2#3Y3;0M0s0?0k2f0A3p4c3z0L2=4Y3Q3}4T040K0j0x0K1K4%4Q1_4#3c4;4k1O4S0?0N0A2h4.3p0r4Z3Z0d0?0R3w4q3z0h0y0?030r0C0U0m0*0m0B0%2T2k0N0u0j0S3/3s0?1.0B0B0i4_441O0=040E5B370A0N0?0P3.4v4(1_5E0T520r5U5V535P1O5c5e0r0*0r0K3B4,1L0b1L0i0U0v0*0h1L0x0u0v0N0X200s0K5u3z4*0v1}0j0v5H3z5E0E5S4i5W6d5X4=5Z5d045f1K0(5^0q170r5m0K5$0B0l0U603*0?0m0d5)673Z696D3;56040z6G1_5J4n5N2(5Y0.5E0D52543;6N3,0o6P2_6W5Q0?6b2$5U6%6h5#5%5)4.0j5,5.5:5=5,4-5$0u0r0m5r0h0Q5.1L5%1{0m4-0B6x3}0?630s0i0d0L185O6g6S0?6a5T6e6-0.5!6j6t6m0u6o2m6r0r0g0!0,6w4p065a3Z0M0?0X0k6L1O4@537k4`3k0k4U0p0d4E7j6Q7l016F7S5C3k0?7X0s780B4-7O7m046U6c7r380?0Y5_7a7)375R0J3w5W7`7K040k3B6V6R7{040e8b7$7h4}7!2_6f7T380g0?5^7.7 7#8n7(8u7*016Y498x816)834p6e6,8c4*4E4-0g8t6$8c8w8P7$4*7-7/7;80680?7^6+7`4*7}637=7%6)848H8%8q1D5 8Y6E7n8+6Y3 6#347`5R597I7c887X7Z8+8R8~8c8A6!978!8g8n6Y4o8C8Z046*3`194N0B2y2Z9q4y1s4A2B2D2z1Z1#2B0u1J9t0n4z0^9G7}0#0b04.

Votre flocon

Votre tracé sera ici