Triangle mystérieux

On souhaite dans cet exercice construire une figure géométrique à l'aide d'un processus itératif : nous allons reproduire, à plusieurs reprises, les mêmes étapes de construction.

On considère pour débuter trois points non alignés \(A\), \(B\) et \(C\) formant un triangle et l'on place, à l'intérieur du triangle \(ABC\), un point \(P\) choisi de manière aléatoire.

Le processus répété est le suivant :

  • Étape 1: on choisit aléatoirement un des points \(A\), \(B\) ou \(C\);

  • Étape 2: on construit le milieu du segment d'extrémités \(P\) et le sommet choisi à l'étape 1;

  • Étape 3: on considère désormais que \(P\) est le milieu obtenu à l'étape 2.

De façon générale, à chaque étape, on construit un « nouveau » point \(P\) à partir du précédent.

Cette construction permet d'obtenir une « jolie » figure... Laquelle ? Pour le savoir, vous devrez réussir l'exercice !


Cet exercice comporte plusieurs questions permettant d'envisager successivement les différentes étapes de la construction.

Les éditeurs associés à chaque question restent toutefois indépendants : vous pouvez les aborder dans l'ordre souhaité.

Dessiner des points

On utilise sur cette page une fonction dessine_point qui prend en paramètre un point et affiche ce point sur une figure. Par exemple, le code ci-dessous permet de dessiner le point A à l'écran :

Utilisation de <code>dessine_point</code>
A = (50, 50)
dessine_point(A)

Cette fonction est déjà chargée dans l'éditeur : il ne faut pas la rédiger. Vous devez simplement l'utiliser !

Reproduire la figure ci-dessous dans laquelle les sommets du rectangle ont pour coordonnées :

  • \(\left(0~;~0\right)\) ;
  • \(\left(400~;~ 0\right)\) ;
  • \(\left(400~;~ 200\right)\) ;
  • \(\left(0~;~ 200\right)\).

Les autres points sont régulièrement espacés de \(20\) pixels.

Rectangle

Boucle for

On pourra utiliser une boucle for comme dans l'exemple ci-dessous qui dessine le premier « segment » du rectangle :

for x in range(0, 420, 20):  # x varie entre 0 (inclus) et 420 (exclu), de 20 en 20
    P = (x, 0)
    dessine_point(P)

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

.128013nximwgyk02Po, 56ual84t/sbrvce3)fh:1S=97_dp(050P0D0w0s0d0t0y0o0C0t0s0y0y0L010w0d0Q010406050y0r0e0e0s0A0h040K0m0t0r0,0m0b050x0?0^0`0|0;0Q04151c051f0x1f1h1c0;0P0d0B0!0$0(0*0H0d0g0H0t1v0H0w0/050V0z0t0D1q0%0)011u1w1y1w0w1E1G1C0w0z0m0P0|1D0A1d0w0H0!0 0y0Q0s0b0*0k011I1s010G0X0D0b0s0e0D1C1*1,1;1K1@1G1`1|0/0a0o0l0A0m0Q0m0y0d120b0o0T1(0A0A0D0C2h151 0b1d0x1$2u0w1!1Z1#0P210*1y0b1_2e1C1n1p0#1J2E0d2G0b1W1o1C0Q2n1d2s2u2Y0=1+2i2M1=2R0A0_0t0/0o0J2r2$0:2#202(1K2*2,2.0k2;1,2?2s2D012{0s2-040o0E2 2t0;322_0*35370o0v3b312$333h2.0p3l3d3n3f340m2+362.0q3s2@2%1r2`3x2|380N3C3e3F3g3H3z380u3L3u3N3w3y3i0M3T2^3V3p040J0j3!3E2N3W3I0J2:162=1e2W152K2x0P2B330C1W1}1d3`1g3^2!3=30053 0T2X3U3-0i0/0G3x3l0o3D3o0/0c4j4l3v0m0f0/2P4p3M3-0b0z0/0A1,0g0D3l4q3V0.040R4G4x1=0e0d0/3*472t4H3-4J0n4w4d4O4Q040v0j3;2!4N1K4X4Z3#3-4P0/0k4S4+4!4-0/0F0I3s0o504k4,3g0/0l4/3,1=0m0/0L57334J4L4T4c4:2)4n4M4`0*4.5h525n014=044^3?53014J0F4 514V5k040T0(2P0D0O2d2P0w5m5j4{4K5P582`555T5e4|5C505E5V04565q5$0*5a045c5*5y5f5X3v0b5l5h5+5z0/4Y5:5s5u4@5w485;5Z5h06515r5Q545G0D5I2G5L0m5N5?4I0/5g4_6b345W5`65045B673t6p4f044h0A5d5@0/0h6D3V4s4u145 6p4z4B4D4F6s5s5=6S6p5u634U6t5~2Y6a5U0*614)6k4W5}6H4;4$4@6,1=5A4~67695{5^5(6/595b6 5R6n5x604$6Y5i6(5|046#2=6%4m046G6V7a5A5!7f6E6d6f5K5M0b5O7j5Y5S7v7o5)6o7k662Y685D5y6}7A7e5{5-5/6$5{6U7B335u4(787P6.6M7a6}7i7R3v7l6`7G5s6}5H2f6g7s7u7$6l7x7=4y6r7^6@7D2=0;0x4a0D2u2V823_1o3{2x2z2v1V1X2x0s1F850x3`7 0T0V0X0y04.
Votre figure

Votre tracé sera ici

Point aléatoire dans un triangle

Le point \(P\), utilisé au départ de la construction, doit être choisi aléatoirement à l'intérieur du triangle \(ABC\). Nous allons pour ce faire calculer une moyenne pondérée des coordonnées des sommets.

L'idée est la suivante :

  • on se donne trois points \(A~\left(x_A~;~y_A\right)\), \(B~\left(x_B~;~y_B\right)\) et \(C~\left(x_C~;~y_C\right)\) ;

  • on choisit aléatoirement trois coefficients strictement positifs \(a\), \(b\) et \(c\) dont la somme est non nulle ;

  • les coordonnées du point \(P\) sont alors :

\[x_P = \frac{a\times x_A+b\times x_B+c\times x_C}{a+b+c}\\ \qquad\qquad\qquad y_P = \frac{a\times y_A+b\times y_B+c\times y_C}{a+b+c}\\ \]

Compléter le code ci-dessous afin de calculer les coordonnées du point \(P\).

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

.128013nLx«»imwgyk02P;oC, *+uRalIt/sbrvce.3)Afh-:1SB=êé_dqpD(050Y0I0B0y0g0z0D0t0H0z0y0D0D0U010B0g0!010406050D0w0h0h0y0F0k040S0q0z0w0`0q0b0t020y0h0!0p0t0x0I140F0Z0w0I0D050C111315170 0!041v1C051F0C1F1H1C0 0Y0g0G0/0;0?0^0O0g0j0O0z1V0O0B0}050*0E0z0I1Q0=0@011U1W1Y1W0B1(1*1$0B0E0q0Y171%0F1D0B0O0/1a0D0!0y0b0^0n011,1S010N0,0I0b1i0I1$27292e1.2h1*2k0h2m040a0t0o0F0q0!0q0D0g1d1f0(250F0F0I0H2H1v2o0b1D0C232T0B2120220Y2q0^1Y0b2j2E1$1N1P0:1-2%0g2)0b1}1O1$0!2M1D2R2T2~10281f2/2f2@0F140z0}0R2Q320~312p341.36380}0n3c292T2{0I2T2-2W0Y2!2$010H1}2w0%1O1D3q2}3d3n2S053z0(3G3g1R3i0}0d0X0o3I040t3f333P0^0q0}0U3V3X2R3x0|040$3V3Y3x0b0}0y3)3;3h3#0}0u3_3+3{013?043S0M3 323x3$040v473O2:420}0E4d3Z4f4a3~1w3d3*4841433S0T4j490}4c4o3o4q4e350}0H4w414m4H3!4g440X0r3:404L3-0L4K4l0}0C4V2f3-3/4A3J4R4f433^4%3W3`4L4a4z2~4C4k4E044i4-4@4x4b4Z3Q044G4-4/4f4T3V0 4)4_0k3T503|043(4|554!0}4$305a514,4?5j1.4J5i5o0^435c465v4r4:4y5e4M4{5r5w015u5I5C4*0}5c4v5B4D5t5E5S4^51535M5T5f4n5!5X5x5P4O4Q5N5k044U5W4~4Y5=414#5-5#4M5q4p5s5f4=5 5J435H635.5U4 5^4L435Z3H5J574-0 0C3L3r1E2|1v3t1v0B3v6r2Y2U1|1~2W0y1)6m0C3t1B3N5)012M0h0X0N0y0l0I0X0O0K0}1n1p1r1t0t0Q3:1I3e1C0#290.1*0.6M2G0D0s0t2@0w0.1c0,0g0D0I2B0b0.2J0e0t0G0F0+0.0f250I0N2h0H0g2j0B0.0y0z0W0y0B0q0g2M0D0J0t0r0I0w0d0P7c0t0!7t0G7e0t0V2X1+0j0W0b0W0F0W0.280F0t0;0t0N1e2O0g1e3X6l3x1:1X1Z1#6G3=0}740b0Y0q0h6!6l3W2j7S75290B6Y1E3e2-7!1Z1=1!2n680^2s2j2l0}2y0S0H0F0{7{0o0k231e3:3F3Y2 3H7=603y0R0}030t0A1j0q0F7{2J7R7T0b7V8k6i8r0l430N2B7:545J0i0}3X8P8542437,7.8O5n8V8R4.8U5|8K0}0g8y8A5F8X298Z58598V0H8t048v0c6X3z797b7d0b7f0t7h7j7l7n1t588r4+5F4a5h5(7*048Y7/5{6H4#5;2~8^5|659f3%8:7+8=9m8)9o5l9q3d9s6H6d9v5g9x9k9z8!6f8V9p9c6k3A3p6o6D3D6F0c0y7S7U2H3X9#0O2M0N1T1@0!0D0Q0C6D0q0H7p0!8i0O1e0J8z0j0C8M0C0K0C1Y0E74160C9l0h0J1!0h0z03ac0Jac1$7Z417#827(9d9y7-9A309T3M1v0y3W2M0b0G7m1+0w1f2@0ha81+051o049:7t7.0P977k7m2M1vaO251j8e0.7e2M4}41152G0O140B0I0d0}090$0m099E4B0$2=0:6?0L0t0)a*4La,23a/a;a?0$0Ra`3)0$a;a 0L0J7}6j0(0*0,0D04.
Milieu d'un segment

Soit \(M\) et \(N\) deux points du plan de coordonnées \(\left(x_M~;~y_M\right)\) et \(\left(x_N~;~y_N\right)\). Ces points sont représentés en Python par deux couples de nombres (x_M, y_M) et (x_N, y_N).

Écrire la fonction milieu qui prend en paramètres les couples de coordonnées M et N des points \(M\) et \(M\) et renvoie les coordonnées du milieu de \(\left[MN\right]\).

x, y = coords

On rappelle que Python permet facilement de récupérer les différents éléments d'un couple de coordonnées en faisant par exemple :

Récupérer des coordonnées
>>> coords = (3, 5)
>>> x, y = coords
>>> x
3
>>> y
5
Entier \(\longrightarrow\) Décimal

Lorsque Python effectue une division, il considère toujours que le résultat est un nombre décimal (un nombre flottant dit-on en informatique).

C'est pourquoi l'expression (2 + 6) / 2 est évaluée à 4.0.

Exemples
>>> A = (0, 2)
>>> B = (3, 6)
>>> milieu(A, B)
(1.5, 4.0)
>>> C = (10, 4)
>>> D = (5, -8)
>>> milieu(C, D)
(7.5, -2.0)

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

.128013nximwgyk2Po, 56+uMal4t/sbrvce3)fh:1S=_dNp(050N0D0w0t0d0u0y0n0C0u0t0y0y0L010w0d0P010406050y0r0e0e0t0A0h040K0l0u0r0+0l0b050x0=0@0_0{0:0P04141b051e0x1e1g1b0:0N0d0B0Z0#0%0)0H0d0g0H0u1u0H0w0.050U0z0u0D1p0$0(011t1v1x1v0w1D1F1B0w0z0l0N0{1C0A1c0w0H0Z0~0y0P0t0b0)0j011H1r010G0W0D0b0t0e0D1B1)1+1:1J1?1F1_1{0.0a0n0k0A0l0P0l0y0d110b0n0S1%0A0A0D0C2g141~0b1c0x1#2t0w1Z1Y1!0N200)1x0b1^2d1B1m1o0!1I2D0d2F0b1V1n1B0P2m1c2r2t2X0;1*2h2L1;2Q0A0^0u0.0J2q2#0/2!1 2%1J2)2+0.0j2/1+2;2r2C012_0t2,040E2}2s0:302@0)33350v382 2#313e0.0o3h3a3j3c320l2*340.0p3h1d2V142J2w0N2A310C1V1|1c3C1f3A2Z152:053H0S2W3q1q1J0i0.0S0G3y3b3W0)0f0.0n3$3V2M320G0.0e0W0d0D0r3-2?3(010-040Q3{2$3}0b0.0s42313 0m3h3,3%3/45040O483r3 0F0I3o0n4p4d3.2(0.0c0M473P2~2=433/4a4c4A3k0.0h4w4E4e1;0l0.0L4K4s2^464o4q4F3r4g4v4i4y2s4W3}4D4#044r3|4f4H0M4!2X4,4B4M4O4Q4-4t4h4U4p4%4.044v3?1x3_4`4@1J4N044P4*4?490.414*504|4v4x4=5j590.0q574G524:4j4(0.0F5s3r5a0x5A3}3?2{4~5e4X4/543^3`5d5o0)5a5c5n4L1J3 5h2Z5V3d4/5m2:5J3}5a5r5P5!324/4;3Q5.4l5E3/5C5^1;5G042|4*064q5)3/3Y042m0w0r0A135-4R0)5X5w51533@565i5?0.4b6c4{4S044I5M6k5Z6d3~5y3o143S0D2t2U6D3B1n3D2w2y2u1U1W2w0t1E6G0x3C0:6T0T0V0X04.

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

.128013nximwgyk2Po, 56+uMal4t/sbrvce3)fh:1S=_dNp(050N0D0w0t0d0u0y0n0C0u0t0y0y0L010w0d0P010406050y0r0e0e0t0A0h040K0l0u0r0+0l0b050x0=0@0_0{0:0P04141b051e0x1e1g1b0:0N0d0B0Z0#0%0)0H0d0g0H0u1u0H0w0.050U0z0u0D1p0$0(011t1v1x1v0w1D1F1B0w0z0l0N0{1C0A1c0w0H0Z0~0y0P0t0b0)0j011H1r010G0W0D0b0t0e0D1B1)1+1:1J1?1F1_1{0.0a0n0k0A0l0P0l0y0d110b0n0S1%0A0A0D0C2g141~0b1c0x1#2t0w1Z1Y1!0N200)1x0b1^2d1B1m1o0!1I2D0d2F0b1V1n1B0P2m1c2r2t2X0;1*2h2L1;2Q0A0^0u0.0J2q2#0/2!1 2%1J2)2+0.0j2/1+2;2r2C012_0t2,040E2}2s0:302@0)33350v382 2#313e0.0o3h3a3j3c320l2*340.0p3h1d2V142J2w0N2A310C1V1|1c3C1f3A2Z152:053H0S2W3q1q1J0i0.0S0G3y3b3W0)0f0.0n3$3V2M320G0.0e0W0d0D0r3-2?3(010-040Q3{2$3}0b0.0s42313 0m3h3,3%3/45040O483r3 0F0I3o0n4p4d3.2(0.0c0M473P2~2=433/4a4c4A3k0.0h4w4E4e1;0l0.0L4K4s2^464o4q4F3r4g4v4i4y2s4W3}4D4#044r3|4f4H0M4!2X4,4B4M4O4Q4-4t4h4U4p4%4.044v3?1x3_4`4@1J4N044P4*4?490.414*504|4v4x4=5j590.0q574G524:4j4(0.0F5s3r5a0x5A3}3?2{4~5e4X4/543^3`5d5o0)5a5c5n4L1J3 5h2Z5V3d4/5m2:5J3}5a5r5P5!324/4;3Q5.4l5E3/5C5^1;5G042|4*064q5)3/3Y042m0w0r0A135-4R0)5X5w51533@565i5?0.4b6c4{4S044I5M6k5Z6d3~5y3o143S0D2t2U6D3B1n3D2w2y2u1U1W2w0t1E6G0x3C0:6T0T0V0X04.
Figure complète

À ce stade, nous savons :

  • dessiner des points ;

  • placer un point aléatoirement à l'intérieur d'un triangle ;

  • calculer les coordonnées du milieu d'un segment.

Nous pouvons donc, en assemblant ces différents éléments, construire la figure souhaitée.

Quelques dernières remarques :

  • on propose d'utiliser les points \(A\), \(B\) et \(C\) de coordonnées \(A~(0~;~0)\), \(B~(500~;~0)\) et \(C~(250~;~433)\) mais vous pouvez utiliser d'autres points ;
  • la fonction milieu est déjà importée dans l'éditeur, vous pouvez directement l'utiliser ;
  • on propose de répéter le processus de construction \(20\) fois. Là encore vous pouvez modifier cette valeur.

Compléter l'éditeur ci-dessous afin de construire la figure souhaitée !

Rappel de l'algorithme de construction
Fixer le nombre de répétitions à 20

Créer les points A, B et C
Créer la liste des sommets contenant les points A, B et C
Dessiner les points A, B et C

Créer les coefficients aléatoires a, b et c
Calculer les coordonnées du point P initial
Dessiner le point P

Répéter "nombre de répétitions" fois :
    Choisir un sommet aléatoire parmi $A$, $B$ et $C$
    Remplacer les coordonnées de P par celles du milieu du segment [P ; sommet aléatoire]
    Dessiner le point P
Choisir un élément aléatoire

On choisira un sommet aléatoire en utilisant la fonction choice du module random :

# Import de la fonction
from random import choice

# La liste dans laquelle nous allons piocher
neveux = ["Riri", "Fifi", "Loulou"]

# Choix d'un neveu aléatoire parmi ceux listés dans « neveux »
neveu_aleatoire = choice(neveux)

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

.339.128013.324n«T»m%wgPoC,}*6]uRèa8bs[rvceJj-1BSQ9_d(Lxiky02; 5à+lI4t/.ô3)Afh{:=é7qp050O0E0)0w0S0$0z0Y0D0$0w0z0z0@010)0S0{010406050z0t0h0h0w0B0U040K0m0$0t1c0m0d0Y020w0h0{0X0Y0u0E1m0B0`0t0E0z050*1j1l1n1p1h0{041N1U051X0*1X1Z1U1h0O0S0C1416181a0;0S0k0;0$1;0;0)1f050 0y0$0E1,1719011:1=1@1=0)1}1 1{0)0y0m0O1p1|0B1V0)0;141s0z0{0w0d1a0W01211.010:110E0d1A0E1{2p2r2w232z1 2C0h2E040b0Y0l0B0m0{0m0z0S1v1x0}2n0B0B0E0D2Z1N2G0d1V0*2l2/0)2j2i2k0O2I1a1@0d2B2W1{1)1+15222|0S2~0d2f1*1{0{2(1V2-2/3g1i2q1x342x390B1m0$1f0Y0I2,3k1g3j2H3m233o3q3s0W3v2r3x2-2{013C0w3r040Y0-3G2.1h3J3A1a3M3O0Y0(3S3I3k3K3Y3s0Z3$3U3(3W3L0m3p3N3s0r3-3y3l1-3B3=3D3P0_3`3V3}3X3 3@3P0x433/453;3?3Z0M4b3z4d3*040I0V4i3|354e400I3u1O3w3.4j4r4l0I3F4w3H4y4q3n473O0I3R4E3T3{3)4J1f0I3#4N3%4z4I4f4S3,4V4G4Q4Z4m3_4$4P3:4B424,444A4R4m4a4;4c4?4)0I4h4`4X3~4)0W4o504H52400W4v3g4%4.4@0W4D5c4-4k5f4M5i4=4Y594U5n4{5p480W4#5s5146534+3i1!3e1N322=0O2_3K0D2f2O0|1*1V3d0E3f3w3$055M0}5U5z3L1f0d0y0N2V370)1M4V0Y5j4r0m1f0@3$5:5o230h0S1f543-5d4d0D0I1f030Y0Q202?0S2r0k1 0Y2#0y170E4p3)1f0/5_5;2x5?045^5/6q231e040P5W5{1a5}1f553i6C016y0o6p6I6E046G5V6I6y0.6l4.1f0J6M5t236s6u3g5`6!1a6y6A4V6w6D5~040Z0V6Q3H6/6J1f6L6v6N6;6^2.6`6T6V4k1f0n6Z5#6$79576+1f6-6H6*016O5w715!7d6{046}6(6`6O0(0-5m6R7i74566m040z0m1l0~5.7s6I7b6~7z1f0A6B7i0d6n7Q5#6K7c7C6Y6.6S6|7X6W04787!7N040s754A1f0}18370E5*0m5,7U7o6,7|7C6o7+7V1f6U7B7(7=2X2~7_7{827}7f7 7(7Z7h8304855y7o7S04887@8b0d0)8g4d7~8d7C7*8j8e8l616`646668205+8u0Y372Y6c0$0Y3N0^0w0)7`2(7/3n1f0w7%4d7L7J7R1f0B2r0O7F8w4r6,8m4x6`8p0y8%5=5@8|8!048-0d8/0h8;2x8?8Z3B1f0D8 6#8~7M5#8p9294966x7f8@4F8_1f0R0N818C3K7W9g8o1f0U9t9d1a8)3w6)9h7T8676049s8i7y8k7r9G9q049B9O3H9H7o9F9X9T9W4O6I8p9s8B9P8D9R9#9)9A0N9,9:7i9!2.9Y8A993X1f0l9D019`3P737f7g9-7C8$9y3K6s0qa29*9Cac3:6s0#ag1f8{aj8(1fafaq7:9M0N9%a57K1famau909caD9e04at8*9Iaw9@727#8EaG9E1f0*a28y9v7(abaK9ZaBan04apa!ada$aR5$04aFaX8x849/9{a66z9l9 04aZ9SaAaIa%9B9ua 9_a,a*7(a)b57aasb2axa2ala%a:bba#b1a-8p9BaN7n9w84bgaTaV8f8zaYbu04aCb89Lba9^bcbBbia{7p0.9o9(8+8q1L897^8L8vbya=a`bWava1bZ97bt4$624r8H046769133L5)bU0z2vb?0Y1j0D0DbR0S0:7I8^6I0T1f0:3=a%0dbg0j1f37ag0y8,6d6kb$9mbYa;av5(8t5-bK6T0?3-0Ycv9|7(7E7G0)0N3N0E8V8XcibD8}6tbi0;7`b}crbxcm90cz2Ncqcj7eaQ5ccwcx9Lb#cI6r9fc(9a045}1@0E0tcPcla97(c%c@bXa@azbPcT0~cC1 cF0S8YcWbLcucw9T8r8abUc=a86_9;04c_dg7,bN3x0*5Y5T1W5F0*5H1N0)5Jdv2@2:2e2g2=0w1~dqdt5Q1Tbr3:2(0h0N0:0w0T7^0;0-1f1F1H1J1L0Yct6.1!3x1U0Q0w0Y2z0k0t2(0Y0m0y0)2B1K0Y2(181GdFd,3=d@2N8M0w0t5:d+0;2(0:1/290{0z0?0*0*0:0B0+0j0S0T1d0E1)0w0+3=0k0*elen0*0f0B6c0d6e7^0}0N0K0S0E0B0{0S0i0n0Z0i0x0(0zen2v0 0B0k0~1a0N1~2rc41V1G046b6d6f2#eHeJeL0ceT0U1Ne*1N0w040+1Wd(04690Y3d0mb}180t132#5M0d0z2?0t2*0S1w0YdY0Y39f80Y0C2 fc6g20cU2?202B0Y0a0t0Cd:0z000w0{0{0E0$6f6f05e7e9eb0)edefehejeweoeqeseXevem0S0*0Fc:0N0O0t0N0D0;0w300YeWeY0)e!e$0de(0Gc:6ge5f.f:5.e|0+0Y0%8R1L0)f32W2Xd~2#6fe2eJ0Y0!f31n1c0Bfsgb0$0U0k1wdZ5M1B0 8M0t1x390h0yd:dY0$fbfkfa0,0)0^0ze~d%dJeH14200DgL0^0Yg9fl0mgMc#4r1n2Y0;1md@0R1f090P0d09dm0o8S0$3=0zg^0{16b}gogkg1fk0^0 fH0Y6ffmfpe4gb5,g%2xg)2lg,0Eg.04g:0lg?5_hc6`hhg+8Vhkg/0P090Oei0w0D0=0d0phE0#0-0php4V0H0S0v2Nf b`0E0ke2gafH3p0~6g00d=d@0dd40YgA200e0Y0G1seI0Y0gd,1;d/0Eg50l0md/hf23hthjhlg:2s0-hL3gg^fi2(2?h}fp0Y0yeI1xgg11eIe50?h 1ai1hvi3hyhA8-hDhJ0=0-hI0p0@hzhB640Wi73wgP1%1Y2/1Xb}8ueJ3xd+3:6e1^2d0mg.6g8V0w0H0)0UfH1a0S1meY2v0Oi!0Hel0O2lip1u5?iZ0 0H0;0EiVi^8W2ve80Eea01i+0weY0z0*0(0+0z0C0ki.i:7=0D0H2V2X2Z1a2e297F1{i+0kg_f^010L0t8Vd:gVgMb@b`0B0Di*i,1Ljcjejg2vi=i@010-0V0i1{0*e|e63KiU282eiYi/i|i%i)j7jLjii|jR0;j1i`j*i#i~j001e4j20Yj4j6j8ja0*0ZjOjhi{i#jkjm2W8P1wjqg#8W0hju0hjw3Njy0n370`14gWjG0zjIjKj9jMk6jfk8j=1ajUjW2/jZfMj#271_j(j:i#j,0Ekxi-k9i;0Si?j?j}i_kOi}i 28j@j3fOj.kyjb0rk7k#kbjnke2s01jrkikkkm0$jyeH0RksjF2vkvjJk,k4k/kBjQkWjSkFjXe|1hdo2Bd@2@1$dn0}0 110z04.
Votre figure

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

.339.128013.324n«T»m%wgPoC,}*6]uRèa8bs[rvceJj-1BSQ9_d(Lxiky02; 5à+lI4t/.ô3)Afh{:=é7qp050O0E0)0w0S0$0z0Y0D0$0w0z0z0@010)0S0{010406050z0t0h0h0w0B0U040K0m0$0t1c0m0d0Y020w0h0{0X0Y0u0E1m0B0`0t0E0z050*1j1l1n1p1h0{041N1U051X0*1X1Z1U1h0O0S0C1416181a0;0S0k0;0$1;0;0)1f050 0y0$0E1,1719011:1=1@1=0)1}1 1{0)0y0m0O1p1|0B1V0)0;141s0z0{0w0d1a0W01211.010:110E0d1A0E1{2p2r2w232z1 2C0h2E040b0Y0l0B0m0{0m0z0S1v1x0}2n0B0B0E0D2Z1N2G0d1V0*2l2/0)2j2i2k0O2I1a1@0d2B2W1{1)1+15222|0S2~0d2f1*1{0{2(1V2-2/3g1i2q1x342x390B1m0$1f0Y0I2,3k1g3j2H3m233o3q3s0W3v2r3x2-2{013C0w3r040Y0-3G2.1h3J3A1a3M3O0Y0(3S3I3k3K3Y3s0Z3$3U3(3W3L0m3p3N3s0r3-3y3l1-3B3=3D3P0_3`3V3}3X3 3@3P0x433/453;3?3Z0M4b3z4d3*040I0V4i3|354e400I3u1O3w3.4j4r4l0I3F4w3H4y4q3n473O0I3R4E3T3{3)4J1f0I3#4N3%4z4I4f4S3,4V4G4Q4Z4m3_4$4P3:4B424,444A4R4m4a4;4c4?4)0I4h4`4X3~4)0W4o504H52400W4v3g4%4.4@0W4D5c4-4k5f4M5i4=4Y594U5n4{5p480W4#5s5146534+5y575A594:5D4(594_3i1!3e1N322=0O2_3K0D2f2O0|1*1V3d0E3f3w3$055V0}5%5z010T0d1f0:2T0h5)5o230j3s5_5t3B5;040B2r0O0m5^4V5j4r5|3P5~5.5:1f0S1B3=0)3$0Y693n1f0D0;0m0S0D0E6d5E011e040o6l6n3B1f630d65675c5d4k1f0d0y0N2V370)1M4V6m5`1a0m1f0@6C6X010h0S1f543-6L4r0D0I1f030Y0Q202?0S2r0k1 0Y2#0y176v563)1f0/6$5 6Y6!785.6z0P6w3K6)1f553i6%6z6B6V6D1a7i047k5(7m1f0.4p75040J7c6x6Z046#7p7w047f686%7s0Z0V7u3H7q6y1f7o3g6W796(6*7t7g3:6z7y744.1f0n7D3K7F7H7X7T7e7%4d7s5w7R2.7@7V7/3:7s0(0-5m7v7Z7)7z7,040z662N6T814d7;8h4r6z0A7_4A768o2x7n8k6o7B8r238t7I7Z617.7M881f0s8a6M040}18370E6Q6s0d6k8E7d1f7L7l8B8q8T6x897+8J8L2X2~8P6S8x1a7^8!7A7C8;7(7x8I8p8K1L8*8O6R8R8.7U7K928C928$6K7T6:6=6@20900)0Y372Y6{0$0Y3N0^0w0)6s2(8`8v0w8u238j8A5.616G6I978V7*5I8b0y9w7a7G9K3L6F64669E7K9G4x7T610D9N9y7?6%9B9Q6J878U9T9t6E040R0N778@4d8z9#8Y040U9;9Z7b9z6x619=9H8J9:8?8X9+7W3w7Y9A1f9|a7ab7T9!ah9$1fag4F9W1f9:8Da88#80a07A9|asak7Zaj3Haca17-9-3X1f0l9~9Maw8^7K8W9*aF049vaN8i1f0q9N619:a3aA5.7F0#aZ1f9JaV4r7FaYa.8va6aLa*a=9.9Ya`9La;9_ad9/0Naz7S7J9UaDai1f0*9N8:at7AaUb07E1fa_bh7Aa-bl3:a)a+04a|beaO0.aab87JaQb59`bga%bi04a bEax9}a}01bqbL61bnbIbpaXbrafa^brbtbRaWbGbUb39Sb72.aE7:babc8V951fbDbyaBbjbrbQb?a(b^bO6pb(b)4WaS8)8N8,919?8lb/c88vaKcb8y8_4$6.2x9b046?6^133L6P9f0z2vcr0Y1j0D6u8M0:6Ua44r0T5=3=br0d9Z6b37aZ0y9P0d0k73bu9@cacS8{6Oc68gce8/7x0?3-0Yc)b+8b8d1l0~0N3N0E9p9rcRbZa/9 bo8J6q6s6u9SbA7~al8c8e0~cBaR3K984xc*c+8Jcdc|c`aMdh8v6)1@0E0td1b:04dgd9aObxb*apd5c.0)c:1 c?0S9sc!93c106dddyc48+9fdqdH61dtbB9+dJ1N5+5$1W5O0*5Q1N0)5Sd(2@2:2e2g2=0w1~dZd$5Z1T5-6x2(0h0N0:0w0T8O0;0-1f1F1H1J1L0Yc%681!3x1U0Q0w0Y2z0k0t2(0Y0m0y0)2B1K0Y2(181Gd=ei6j1G2B9g0w0t6meh0;2(0:1/290{0z0?0*0*5?0+0j0S0T1d0E1)0w0+3=0k0*eTeV0*0f0B6{cP1 0N0}0N0K0S0E0B0{0S0i0n0Z0i0x0(0zeV2v0 0BcQ0)1a0N1~2rcE1V1G046`6|6~2#e?e^e`0cf20U1Nff1N0w040+1Wee046^0Y3d0mcy1j132#5V0d0z2?0t2*0S1w0Ye80Y390t130C2 fJ6 208f2?202B0Y0a0t0Cem0z000w0{0{0E0$6~6~05eGeIeK0)eMeOeQ0BeSeUeWeYe!f6e%g40*0Fdoe:0t0N6q0w300Yf5f7f9fb0dfd0Gdo6 eEgh2Wftfv0Y0%9l1L9g2V8Mex2#6~2N2~0B0Y0!fB1n1cgL2#2V0$0U0k1we95V1B0 8R0Y0t1x390h0yeme80$fIfRfH0,0)0^0zfwedd_e?14200Dg?0^0YgCfS0mg@de4r1n2Y0;1meq0R1f090P0d09c10o9m0$3=0zhm0{166ugLgNghfR0^0 f=0Y6~fTfWeDfB8Q9g7Tha2lhd0Ehf04hh0lhk6lhGhKe,hM9phOhg0P090O5?0w0D0=0d0ph,0#0-0phT4V0H0S0v2Ngtcv0E0kgJgDe^8f6 00eoeq0ddFg%2~0Y0e0Y0G1se@0Y0gei1;el0E0+2R0melh82xhLhchZhPhh2s0-h?3ghmfP2(2?iqfW0Y0ye@1xgI11e@eE0?is23iuhNixh$h(63h+h;0=0-h:0p0@h%h)6:0WiB3wg`1%1Y2/1X6u8Re^3xeh3:6}1^2d0mhf6 9p0w0H0)0Uf=1a6h0wcQ2v0Oj50HeT0O2l1aeD9qjfjh0;0Ej0jm1u6Z0YeH0EeJ01jccQ0z0*0(0+0z0C0kjp0 0H8L0D0HgE9j1w1a2e29661{6h0khnf8010L0t9pemh0g@cscv0B0Djb1mjDjFjHjJ2vjjjl010-0V0i1{0*fueF3Ki 282ej3jgjMj8jajBj?2Ej4jMj|0;jujokij6jrjt01jnjwjyjAjC1L0*0Zj_jKkojN1LjPjR2ZjUh69q0hjY0hj!3Nj$0n370`14h1j.0zj:j=jdkykAjIkCkk1aj k12/k4f`k6271_k9jLj6kd0Ek!jekDk*ksjvk^0Hkq28kmkuf|kfk#jE0rkBl2jOjQ2WjS2s01jVkLkNkP0$j$e?0RkVj-2vkYj;l9j@lck(j{0Sjkklj~k0k2fu1h0*i_eq2@1$3xd$0~101204.
Votre figure

Votre tracé sera ici