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 dessine_point
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

.128013,:ag)1ikn9/S=vmsuhb84y7ex62odt c0(wr5_P3plf050D0y0E0d0h0Q0q0F0G0Q0d0q0q0n010E0h0P010406050q0r0p0p0d0K0w040m0C0Q0r0,0C0j050l0?0^0`0|0;0P04151c051f0l1f1h1c0;0D0h0o0!0$0(0*0s0h0e0s0Q1v0s0E0/050V0t0Q0y1q0%0)011u1w1y1w0E1E1G1C0E0t0C0D0|1D0K1d0E0s0!0 0q0P0d0j0*0B011I1s010R0X0y0j0d0p0y1C1*1,1;1K1@1G1`1|0/0a0F0N0K0C0P0C0q0h120j0F0T1(0K0K0y0G2h151 0j1d0l1$2u0E1!1Z1#0D210*1y0j1_2e1C1n1p0#1J2E0h2G0j1W1o1C0P2n1d2s2u2Y0=1+2i2M1=2R0K0_0Q0/0F0g2r2$0:2#202(1K2*2,2.0B2;1,2?2s2D012{0d2-040F0O2 2t0;322_0*35370F0v3b312$333h2.0L3l3d3n3f340C2+362.0A3s2@2%1r2`3x2|380x3C3e3F3g3H3z380u3L3u3N3w3y3i0k3T2^3V3p040g0H3!3E2N3W3I0g2:162=1e2W152K2x0D2B330G1W1}1d3`1g3^2!3=30053 0T2X3U3-0i0/0R3x3l0F3D3o0/0z4j4l3v0C0J0/2P4p3M3-0j0t0/0K1,0e0y3l4q3V0.040I4G4x1=0p0h0/3*472t4H3-4J0b4w4d4O4Q040v0H3;2!4N1K4X4Z3#3-4P0/0B4S4+4!4-0/0f0c3s0F504k4,3g0/0N4/3,1=0C0/0n57334J4L4T4c4:2)4n4M4`0*4.5h525n014=044^3?53014J0f4 514V5k040T0(2P0y0M2d2P0E5m5j4{4K5P582`555T5e4|5C505E5V04565q5$0*5a045c5*5y5f5X3v0j5l5h5+5z0/4Y5:5s5u4@5w485;5Z5h06515r5Q545G0y5I2G5L0C5N5?4I0/5g4_6b345W5`65045B673t6p4f044h0K5d5@0/0w6D3V4s4u145 6p4z4B4D4F6s5s5=6S6p5u634U6t5~2Y6a5U0*614)6k4W5}6H4;4$4@6,1=5A4~67695{5^5(6/595b6 5R6n5x604$6Y5i6(5|046#2=6%4m046G6V7a5A5!7f6E6d6f5K5M0j5O7j5Y5S7v7o5)6o7k662Y685D5y6}7A7e5{5-5/6$5{6U7B335u4(787P6.6M7a6}7i7R3v7l6`7G5s6}5H2f6g7s7u7$6l7x7=4y6r7^6@7D2=0;0l4a0y2u2V823_1o3{2x2z2v1V1X2x0d1F850l3`7 0T0V0X0q04.
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 : /

.128013:C,»êag)LR1IiknD/SAé=vmsB«uhb.;yxe+2*o-dt c0(wr_P3qplf050O0I0P0g0n0#0y0Q0R0#0g0y0y0v010P0n0!010406050y0B0x0x0g0V0G040s0M0#0B0`0M0p0Q020g0x0!0F0Q0k0I140V0Z0B0I0y050r111315170 0!041v1C051F0r1F1H1C0 0O0n0w0/0;0?0^0C0n0h0C0#1V0C0P0}050*0D0#0I1Q0=0@011U1W1Y1W0P1(1*1$0P0D0M0O171%0V1D0P0C0/1a0y0!0g0p0^0K011,1S010$0,0I0p1i0I1$27292e1.2h1*2k0x2m040a0Q0X0V0M0!0M0y0n1d1f0(250V0V0I0R2H1v2o0p1D0r232T0P2120220O2q0^1Y0p2j2E1$1N1P0:1-2%0n2)0p1}1O1$0!2M1D2R2T2~10281f2/2f2@0V140#0}0l2Q320~312p341.36380}0K3c292T2{0I2T2-2W0O2!2$010R1}2w0%1O1D3q2}3d3n2S053z0(3G3g1R3i0}0H0W0X3I040Q3f333P0^0M0}0v3V3X2R3x0|040T3V3Y3x0p0}0g3)3;3h3#0}0L3_3+3{013?043S0t3 323x3$040J473O2:420}0D4d3Z4f4a3~1w3d3*4841433S0z4j490}4c4o3o4q4e350}0R4w414m4H3!4g440W0c3:404L3-0i4K4l0}0r4V2f3-3/4A3J4R4f433^4%3W3`4L4a4z2~4C4k4E044i4-4@4x4b4Z3Q044G4-4/4f4T3V0 4)4_0G3T503|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 0r3L3r1E2|1v3t1v0P3v6r2Y2U1|1~2W0g1)6m0r3t1B3N5)012M0x0W0$0g0o0I0W0C0Y0}1n1p1r1t0Q0b3:1I3e1C0q290.1*0.6M2G0y0d0Q2@0B0.1c0,0n0y0I2B0p0.2J0A0Q0w0V0+0.0e250I0$2h0R0n2j0P0.0g0#0u0g0P0M0n2M0y0E0Q0c0I0B0H0N7c0Q0!7t0w7e0Q0f2X1+0h0u0p0u0V0u0.280V0Q0;0Q0$1e2O0n1e3X6l3x1:1X1Z1#6G3=0}740p0O0M0x6!6l3W2j7S75290P6Y1E3e2-7!1Z1=1!2n680^2s2j2l0}2y0s0R0V0{7{0X0G231e3:3F3Y2 3H7=603y0l0}030Q0m1j0M0V7{2J7R7T0p7V8k6i8r0o430$2B7:545J0U0}3X8P8542437,7.8O5n8V8R4.8U5|8K0}0n8y8A5F8X298Z58598V0R8t048v0j6X3z797b7d0p7f0Q7h7j7l7n1t588r4+5F4a5h5(7*048Y7/5{6H4#5;2~8^5|659f3%8:7+8=9m8)9o5l9q3d9s6H6d9v5g9x9k9z8!6f8V9p9c6k3A3p6o6D3D6F0j0g7S7U2H3X9#0C2M0$1T1@0!0y0b0r6D0M0R7p0!8i0C1e0E8z0h0r8M0r0Y0r1Y0D74160r9l0x0E1!0x0#03ac0Eac1$7Z417#827(9d9y7-9A309T3M1v0g3W2M0p0w7m1+0B1f2@0xa81+051o049:7t7.0N977k7m2M1vaO251j8e0.7e2M4}41152G0C140P0I0H0}090T0S099E4B0T2=0:6?0i0Q0)a*4La,23a/a;a?0T0la`3)0Ta;a 0i0E7}6j0(0*0,0y04.
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

.128013,:ag)1iknN/S=vmsuhb4yxe6+2odt cM(wr5_P3plf050C0x0D0d0h0P0q0E0F0P0d0q0q0n010D0h0O010406050q0r0p0p0d0J0v040m0B0P0r0+0B0j050l0=0@0_0{0:0O04141b051e0l1e1g1b0:0C0h0o0Z0#0%0)0s0h0e0s0P1u0s0D0.050U0t0P0x1p0$0(011t1v1x1v0D1D1F1B0D0t0B0C0{1C0J1c0D0s0Z0~0q0O0d0j0)0A011H1r010Q0W0x0j0d0p0x1B1)1+1:1J1?1F1_1{0.0a0E0M0J0B0O0B0q0h110j0E0S1%0J0J0x0F2g141~0j1c0l1#2t0D1Z1Y1!0C200)1x0j1^2d1B1m1o0!1I2D0h2F0j1V1n1B0O2m1c2r2t2X0;1*2h2L1;2Q0J0^0P0.0g2q2#0/2!1 2%1J2)2+0.0A2/1+2;2r2C012_0d2,040N2}2s0:302@0)33350u382 2#313e0.0K3h3a3j3c320B2*340.0y3h1d2V142J2w0C2A310F1V1|1c3C1f3A2Z152:053H0S2W3q1q1J0i0.0S0Q3y3b3W0)0I0.0E3$3V2M320Q0.0p0W0h0x0r3-2?3(010-040H3{2$3}0j0.0G42313 0b3h3,3%3/45040k483r3 0f0c3o0E4p4d3.2(0.0w0L473P2~2=433/4a4c4A3k0.0v4w4E4e1;0B0.0n4K4s2^464o4q4F3r4g4v4i4y2s4W3}4D4#044r3|4f4H0L4!2X4,4B4M4O4Q4-4t4h4U4p4%4.044v3?1x3_4`4@1J4N044P4*4?490.414*504|4v4x4=5j590.0z574G524:4j4(0.0f5s3r5a0l5A3}3?2{4~5e4X4/543^3`5d5o0)5a5c5n4L1J3 5h2Z5V3d4/5m2:5J3}5a5r5P5!324/4;3Q5.4l5E3/5C5^1;5G042|4*064q5)3/3Y042m0D0r0J135-4R0)5X5w51533@565i5?0.4b6c4{4S044I5M6k5Z6d3~5y3o143S0x2t2U6D3B1n3D2w2y2u1U1W2w0d1E6G0l3C0: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

.128013,:ag)1iknN/S=vmsuhb4yxe6+2odt cM(wr5_P3plf050C0x0D0d0h0P0q0E0F0P0d0q0q0n010D0h0O010406050q0r0p0p0d0J0v040m0B0P0r0+0B0j050l0=0@0_0{0:0O04141b051e0l1e1g1b0:0C0h0o0Z0#0%0)0s0h0e0s0P1u0s0D0.050U0t0P0x1p0$0(011t1v1x1v0D1D1F1B0D0t0B0C0{1C0J1c0D0s0Z0~0q0O0d0j0)0A011H1r010Q0W0x0j0d0p0x1B1)1+1:1J1?1F1_1{0.0a0E0M0J0B0O0B0q0h110j0E0S1%0J0J0x0F2g141~0j1c0l1#2t0D1Z1Y1!0C200)1x0j1^2d1B1m1o0!1I2D0h2F0j1V1n1B0O2m1c2r2t2X0;1*2h2L1;2Q0J0^0P0.0g2q2#0/2!1 2%1J2)2+0.0A2/1+2;2r2C012_0d2,040N2}2s0:302@0)33350u382 2#313e0.0K3h3a3j3c320B2*340.0y3h1d2V142J2w0C2A310F1V1|1c3C1f3A2Z152:053H0S2W3q1q1J0i0.0S0Q3y3b3W0)0I0.0E3$3V2M320Q0.0p0W0h0x0r3-2?3(010-040H3{2$3}0j0.0G42313 0b3h3,3%3/45040k483r3 0f0c3o0E4p4d3.2(0.0w0L473P2~2=433/4a4c4A3k0.0v4w4E4e1;0B0.0n4K4s2^464o4q4F3r4g4v4i4y2s4W3}4D4#044r3|4f4H0L4!2X4,4B4M4O4Q4-4t4h4U4p4%4.044v3?1x3_4`4@1J4N044P4*4?490.414*504|4v4x4=5j590.0z574G524:4j4(0.0f5s3r5a0l5A3}3?2{4~5e4X4/543^3`5d5o0)5a5c5n4L1J3 5h2Z5V3d4/5m2:5J3}5a5r5P5!324/4;3Q5.4l5E3/5C5^1;5G042|4*064q5)3/3Y042m0D0r0J135-4R0)5X5w51533@565i5?0.4b6c4{4S044I5M6k5Z6d3~5y3o143S0x2t2U6D3B1n3D2w2y2u1U1W2w0d1E6G0l3C0: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

.339.128013.324,:CLkn9ôàSA{vBsu8;7y[e62J-0w]r5_p»Q)agR1IiTè/é=m«hb.4x+j*oPd ct(%}3qlf050.0y0;0N0S0`0r0/0:0`0N0r0r0X010;0S0J010406050r0s0Y0Y0N0G0w040m0,0`0s1c0,0i0/020N0Y0J0u0/0P0y1m0G0_0s0y0r050V1j1l1n1p1h0J041N1U051X0V1X1Z1U1h0.0S0p1416181a0!0S0O0!0`1;0!0;1f050 0#0`0y1,1719011:1=1@1=0;1}1 1{0;0#0,0.1p1|0G1V0;0!141s0r0J0N0i1a0A01211.010{110y0i1A0y1{2p2r2w232z1 2C0Y2E040b0/0-0G0,0J0,0r0S1v1x0}2n0G0G0y0:2Z1N2G0i1V0V2l2/0;2j2i2k0.2I1a1@0i2B2W1{1)1+15222|0S2~0i2f1*1{0J2(1V2-2/3g1i2q1x342x390G1m0`1f0/0Q2,3k1g3j2H3m233o3q3s0A3v2r3x2-2{013C0N3r040/0^3G2.1h3J3A1a3M3O0/0%3S3I3k3K3Y3s0H3$3U3(3W3L0,3p3N3s0z3-3y3l1-3B3=3D3P0v3`3V3}3X3 3@3P0t433/453;3?3Z0j4b3z4d3*040Q0D4i3|354e400Q3u1O3w3.4j4r4l0Q3F4w3H4y4q3n473O0Q3R4E3T3{3)4J1f0Q3#4N3%4z4I4f4S3,4V4G4Q4Z4m3_4$4P3:4B424,444A4R4m4a4;4c4?4)0Q4h4`4X3~4)0A4o504H52400A4v3g4%4.4@0A4D5c4-4k5f4M5i4=4Y594U5n4{5p480A4#5s5146534+3i1!3e1N322=0.2_3K0:2f2O0|1*1V3d0y3f3w3$055M0}5U5z3L1f0i0#0I2V370;1M4V0/5j4r0,1f0X3$5:5o230Y0S1f543-5d4d0:0Q1f030/0g202?0S2r0O1 0/2#0#170y4p3)1f0n5_5;2x5?045^5/6q231e040=5W5{1a5}1f553i6C016y0d6p6I6E046G5V6I6y0M6l4.1f0q6M5t236s6u3g5`6!1a6y6A4V6w6D5~040H0D6Q3H6/6J1f6L6v6N6;6^2.6`6T6V4k1f0f6Z5#6$79576+1f6-6H6*016O5w715!7d6{046}6(6`6O0%0^5m6R7i74566m040r0,1l0~5.7s6I7b6~7z1f0x6B7i0i6n7Q5#6K7c7C6Y6.6S6|7X6W04787!7N040F754A1f0}18370y5*0,5,7U7o6,7|7C6o7+7V1f6U7B7(7=2X2~7_7{827}7f7 7(7Z7h8304855y7o7S04887@8b0i0;8g4d7~8d7C7*8j8e8l616`646668205+8u0/372Y6c0`0/3N0W0N0;7`2(7/3n1f0N7%4d7L7J7R1f0G2r0.7F8w4r6,8m4x6`8p0#8%5=5@8|8!048-0i8/0Y8;2x8?8Z3B1f0:8 6#8~7M5#8p9294966x7f8@4F8_1f0(0I818C3K7W9g8o1f0w9t9d1a8)3w6)9h7T8676049s8i7y8k7r9G9q049B9O3H9H7o9F9X9T9W4O6I8p9s8B9P8D9R9#9)9A0I9,9:7i9!2.9Y8A993X1f0-9D019`3P737f7g9-7C8$9y3K6s0+a29*9Cac3:6s0)ag1f8{aj8(1fafaq7:9M0I9%a57K1famau909caD9e04at8*9Iaw9@727#8EaG9E1f0Va28y9v7(abaK9ZaBan04apa!ada$aR5$04aFaX8x849/9{a66z9l9 04aZ9SaAaIa%9B9ua 9_a,a*7(a)b57aasb2axa2ala%a:bba#b1a-8p9BaN7n9w84bgaTaV8f8zaYbu04aCb89Lba9^bcbBbia{7p0M9o9(8+8q1L897^8L8vbya=a`bWava1bZ97bt4$624r8H046769133L5)bU0r2vb?0/1j0:0:bR0S0{7I8^6I0h1f0{3=a%0ibg0E1f37ag0#8,6d6kb$9mbYa;av5(8t5-bK6T0e3-0/cv9|7(7E7G0;0I3N0y8V8XcibD8}6tbi0!7`b}crbxcm90cz2Ncqcj7eaQ5ccwcx9Lb#cI6r9fc(9a045}1@0y0scPcla97(c%c@bXa@azbPcT0~cC1 cF0S8YcWbLcucw9T8r8abUc=a86_9;04c_dg7,bN3x0V5Y5T1W5F0V5H1N0;5Jdv2@2:2e2g2=0N1~dqdt5Q1Tbr3:2(0Y0I0{0N0h7^0!0^1f1F1H1J1L0/ct6.1!3x1U0g0N0/2z0O0s2(0/0,0#0;2B1K0/2(181GdFd,3=d@2N8M0N0s5:d+0!2(0{1/290J0r0e0V0V0{0G0$0E0S0h1d0y1)0N0$3=0O0Velen0V0T0G6c0i6e7^0}0I0m0S0y0G0J0S0?0f0H0?0t0%0ren2v0 0G0O0~1a0I1~2rc41V1G046b6d6f2#eHeJeL0ceT0w1Ne*1N0N040$1Wd(04690/3d0,b}180s132#5M0i0r2?0s2*0S1w0/dY0/39f80/0p2 fc6g20cU2?202B0/0a0s0pd:0r000N0J0J0y0`6f6f05e7e9eb0;edefehejeweoeqeseXevem0S0V0Bc:0I0.0s0I0:0!0N300/eWeY0;e!e$0ie(0*c:6ge5f.f:5.e|0$0/0R8R1L0;f32W2Xd~2#6fe2eJ0/0lf31n1c0Gfsgb0`0w0O1wdZ5M1B0 8M0s1x390Y0#d:dY0`fbfkfa0k0;0W0re~d%dJeH14200:gL0W0/g9fl0,gMc#4r1n2Y0!1md@0(1f090=0i09dm0d8S0`3=0rg^0J16b}gogkg1fk0W0 fH0/6ffmfpe4gb5,g%2xg)2lg,0yg.04g:0-g?5_hc6`hhg+8Vhkg/0=090.ei0N0:0o0i0@hE0)0^0@hp4V0C0S0U2Nf b`0y0Oe2gafH3p0~6g00d=d@0id40/gA200Z0/0*1seI0/0Kd,1;d/0yg50-0,d/hf23hthjhlg:2s0^hL3gg^fi2(2?h}fp0/0#eI1xgg11eIe50eh 1ai1hvi3hyhA8-hDhJ0o0^hI0@0XhzhB640Ai73wgP1%1Y2/1Xb}8ueJ3xd+3:6e1^2d0,g.6g8V0N0C0;0wfH1a0S1meY2v0.i!0Cel0.2lip1u5?iZ0 0C0!0yiVi^8W2ve80yea01i+0NeY0r0V0%0$0r0p0Oi.i:7=0:0C2V2X2Z1a2e297F1{i+0Og_f^010L0s8Vd:gVgMb@b`0G0:i*i,1Ljcjejg2vi=i@010^0D0?1{0Ve|e63KiU282eiYi/i|i%i)j7jLjii|jR0!j1i`j*i#i~j001e4j20/j4j6j8ja0V0HjOjhi{i#jkjm2W8P1wjqg#8W0Yju0Yjw3Njy0f370_14gWjG0rjIjKj9jMk6jfk8j=1ajUjW2/jZfMj#271_j(j:i#j,0ykxi-k9i;0Si?j?j}i_kOi}i 28j@j3fOj.kyjb0zk7k#kbjnke2s01jrkikkkm0`jyeH0(ksjF2vkvjJk,k4k/kBjQkWjSkFjXe|1hdo2Bd@2@1$dn0}0 110r04.
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

.339.128013.324,:CLkn9ôàSA{vBsu8;7y[e62J-0w]r5_p»Q)agR1IiTè/é=m«hb.4x+j*oPd ct(%}3qlf050.0y0;0N0S0`0r0/0:0`0N0r0r0X010;0S0J010406050r0s0Y0Y0N0G0w040m0,0`0s1c0,0i0/020N0Y0J0u0/0P0y1m0G0_0s0y0r050V1j1l1n1p1h0J041N1U051X0V1X1Z1U1h0.0S0p1416181a0!0S0O0!0`1;0!0;1f050 0#0`0y1,1719011:1=1@1=0;1}1 1{0;0#0,0.1p1|0G1V0;0!141s0r0J0N0i1a0A01211.010{110y0i1A0y1{2p2r2w232z1 2C0Y2E040b0/0-0G0,0J0,0r0S1v1x0}2n0G0G0y0:2Z1N2G0i1V0V2l2/0;2j2i2k0.2I1a1@0i2B2W1{1)1+15222|0S2~0i2f1*1{0J2(1V2-2/3g1i2q1x342x390G1m0`1f0/0Q2,3k1g3j2H3m233o3q3s0A3v2r3x2-2{013C0N3r040/0^3G2.1h3J3A1a3M3O0/0%3S3I3k3K3Y3s0H3$3U3(3W3L0,3p3N3s0z3-3y3l1-3B3=3D3P0v3`3V3}3X3 3@3P0t433/453;3?3Z0j4b3z4d3*040Q0D4i3|354e400Q3u1O3w3.4j4r4l0Q3F4w3H4y4q3n473O0Q3R4E3T3{3)4J1f0Q3#4N3%4z4I4f4S3,4V4G4Q4Z4m3_4$4P3:4B424,444A4R4m4a4;4c4?4)0Q4h4`4X3~4)0A4o504H52400A4v3g4%4.4@0A4D5c4-4k5f4M5i4=4Y594U5n4{5p480A4#5s5146534+5y575A594:5D4(594_3i1!3e1N322=0.2_3K0:2f2O0|1*1V3d0y3f3w3$055V0}5%5z010h0i1f0{2T0Y5)5o230E3s5_5t3B5;040G2r0.0,5^4V5j4r5|3P5~5.5:1f0S1B3=0;3$0/693n1f0:0!0,0S0:0y6d5E011e040d6l6n3B1f630i65675c5d4k1f0i0#0I2V370;1M4V6m5`1a0,1f0X6C6X010Y0S1f543-6L4r0:0Q1f030/0g202?0S2r0O1 0/2#0#176v563)1f0n6$5 6Y6!785.6z0=6w3K6)1f553i6%6z6B6V6D1a7i047k5(7m1f0M4p75040q7c6x6Z046#7p7w047f686%7s0H0D7u3H7q6y1f7o3g6W796(6*7t7g3:6z7y744.1f0f7D3K7F7H7X7T7e7%4d7s5w7R2.7@7V7/3:7s0%0^5m7v7Z7)7z7,040r662N6T814d7;8h4r6z0x7_4A768o2x7n8k6o7B8r238t7I7Z617.7M881f0F8a6M040}18370y6Q6s0i6k8E7d1f7L7l8B8q8T6x897+8J8L2X2~8P6S8x1a7^8!7A7C8;7(7x8I8p8K1L8*8O6R8R8.7U7K928C928$6K7T6:6=6@20900;0/372Y6{0`0/3N0W0N0;6s2(8`8v0N8u238j8A5.616G6I978V7*5I8b0#9w7a7G9K3L6F64669E7K9G4x7T610:9N9y7?6%9B9Q6J878U9T9t6E040(0I778@4d8z9#8Y040w9;9Z7b9z6x619=9H8J9:8?8X9+7W3w7Y9A1f9|a7ab7T9!ah9$1fag4F9W1f9:8Da88#80a07A9|asak7Zaj3Haca17-9-3X1f0-9~9Maw8^7K8W9*aF049vaN8i1f0+9N619:a3aA5.7F0)aZ1f9JaV4r7FaYa.8va6aLa*a=9.9Ya`9La;9_ad9/0Iaz7S7J9UaDai1f0V9N8:at7AaUb07E1fa_bh7Aa-bl3:a)a+04a|beaO0Maab87JaQb59`bga%bi04a bEax9}a}01bqbL61bnbIbpaXbrafa^brbtbRaWbGbUb39Sb72.aE7:babc8V951fbDbyaBbjbrbQb?a(b^bO6pb(b)4WaS8)8N8,919?8lb/c88vaKcb8y8_4$6.2x9b046?6^133L6P9f0r2vcr0/1j0:6u8M0{6Ua44r0h5=3=br0i9Z6b37aZ0#9P0i0O73bu9@cacS8{6Oc68gce8/7x0e3-0/c)b+8b8d1l0~0I3N0y9p9rcRbZa/9 bo8J6q6s6u9SbA7~al8c8e0~cBaR3K984xc*c+8Jcdc|c`aMdh8v6)1@0y0sd1b:04dgd9aObxb*apd5c.0;c:1 c?0S9sc!93c106dddyc48+9fdqdH61dtbB9+dJ1N5+5$1W5O0V5Q1N0;5Sd(2@2:2e2g2=0N1~dZd$5Z1T5-6x2(0Y0I0{0N0h8O0!0^1f1F1H1J1L0/c%681!3x1U0g0N0/2z0O0s2(0/0,0#0;2B1K0/2(181Gd=ei6j1G2B9g0N0s6meh0!2(0{1/290J0r0e0V0V5?0$0E0S0h1d0y1)0N0$3=0O0VeTeV0V0T0G6{cP1 0I0}0I0m0S0y0G0J0S0?0f0H0?0t0%0reV2v0 0GcQ0;1a0I1~2rcE1V1G046`6|6~2#e?e^e`0cf20w1Nff1N0N040$1Wee046^0/3d0,cy1j132#5V0i0r2?0s2*0S1w0/e80/390s130p2 fJ6 208f2?202B0/0a0s0pem0r000N0J0J0y0`6~6~05eGeIeK0;eMeOeQ0GeSeUeWeYe!f6e%g40V0Bdoe:0s0I6q0N300/f5f7f9fb0ifd0*do6 eEgh2Wftfv0/0R9l1L9g2V8Mex2#6~2N2~0G0/0lfB1n1cgL2#2V0`0w0O1we95V1B0 8R0/0s1x390Y0#eme80`fIfRfH0k0;0W0rfwedd_e?14200:g?0W0/gCfS0,g@de4r1n2Y0!1meq0(1f090=0i09c10d9m0`3=0rhm0J166ugLgNghfR0W0 f=0/6~fTfWeDfB8Q9g7Tha2lhd0yhf04hh0-hk6lhGhKe,hM9phOhg0=090.5?0N0:0o0i0@h,0)0^0@hT4V0C0S0U2Ngtcv0y0OgJgDe^8f6 00eoeq0idFg%2~0/0Z0/0*1se@0/0Kei1;el0y0$2R0,elh82xhLhchZhPhh2s0^h?3ghmfP2(2?iqfW0/0#e@1xgI11e@eE0eis23iuhNixh$h(63h+h;0o0^h:0@0Xh%h)6:0AiB3wg`1%1Y2/1X6u8Re^3xeh3:6}1^2d0,hf6 9p0N0C0;0wf=1a6h0NcQ2v0.j50CeT0.2l1aeD9qjfjh0!0yj0jm1u6Z0/eH0yeJ01jccQ0r0V0%0$0r0p0Ojp0 0C8L0:0CgE9j1w1a2e29661{6h0Ohnf8010L0s9pemh0g@cscv0G0:jb1mjDjFjHjJ2vjjjl010^0D0?1{0VfueF3Ki 282ej3jgjMj8jajBj?2Ej4jMj|0!jujokij6jrjt01jnjwjyjAjC1L0V0Hj_jKkojN1LjPjR2ZjUh69q0YjY0Yj!3Nj$0f370_14h1j.0rj:j=jdkykAjIkCkk1aj k12/k4f`k6271_k9jLj6kd0yk!jekDk*ksjvk^0Ckq28kmkuf|kfk#jE0zkBl2jOjQ2WjS2s01jVkLkNkP0`j$e?0(kVj-2vkYj;l9j@lck(j{0Sjkklj~k0k2fu1h0Vi_eq2@1$3xd$0~101204.
Votre figure

Votre tracé sera ici