Triangle mystérieux

Cet exercice ne comporte pas de tests : la simple observation de la figure dessinée vous permet d'évaluer votre travail. Le corrigé sera toutefois automatiquement affiché après \(10\) validations.

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

.128013,n w5e9(38m=0p)rhkuoiscb/6S1vt_dg:xay24Pfl7050G0g0E0K0v0Q0w0d0x0Q0K0w0w0m010E0v0o010406050w0t0l0l0K0q0L040B0u0Q0t0,0u0c050z0?0^0`0|0;0o04151c051f0z1f1h1c0;0G0v0D0!0$0(0*0r0v0H0r0Q1v0r0E0/050V0y0Q0g1q0%0)011u1w1y1w0E1E1G1C0E0y0u0G0|1D0q1d0E0r0!0 0w0o0K0c0*0M011I1s010P0X0g0c0K0l0g1C1*1,1;1K1@1G1`1|0/0a0d0O0q0u0o0u0w0v120c0d0T1(0q0q0g0x2h151 0c1d0z1$2u0E1!1Z1#0G210*1y0c1_2e1C1n1p0#1J2E0v2G0c1W1o1C0o2n1d2s2u2Y0=1+2i2M1=2R0q0_0Q0/0d0C2r2$0:2#202(1K2*2,2.0M2;1,2?2s2D012{0K2-040d0j2 2t0;322_0*35370d0N3b312$333h2.0f3l3d3n3f340u2+362.0A3s2@2%1r2`3x2|380R3C3e3F3g3H3z380k3L3u3N3w3y3i0h3T2^3V3p040C0n3!3E2N3W3I0C2:162=1e2W152K2x0G2B330x1W1}1d3`1g3^2!3=30053 0T2X3U3-0s0/0P3x3l0d3D3o0/0J4j4l3v0u0e0/2P4p3M3-0c0y0/0q1,0H0g3l4q3V0.040i4G4x1=0l0v0/3*472t4H3-4J0b4w4d4O4Q040N0n3;2!4N1K4X4Z3#3-4P0/0M4S4+4!4-0/0p0I3s0d504k4,3g0/0O4/3,1=0u0/0m57334J4L4T4c4:2)4n4M4`0*4.5h525n014=044^3?53014J0p4 514V5k040T0(2P0g0F2d2P0E5m5j4{4K5P582`555T5e4|5C505E5V04565q5$0*5a045c5*5y5f5X3v0c5l5h5+5z0/4Y5:5s5u4@5w485;5Z5h06515r5Q545G0g5I2G5L0u5N5?4I0/5g4_6b345W5`65045B673t6p4f044h0q5d5@0/0L6D3V4s4u145 6p4z4B4D4F6s5s5=6S6p5u634U6t5~2Y6a5U0*614)6k4W5}6H4;4$4@6,1=5A4~67695{5^5(6/595b6 5R6n5x604$6Y5i6(5|046#2=6%4m046G6V7a5A5!7f6E6d6f5K5M0c5O7j5Y5S7v7o5)6o7k662Y685D5y6}7A7e5{5-5/6$5{6U7B335u4(787P6.6M7a6}7i7R3v7l6`7G5s6}5H2f6g7s7u7$6l7x7=4y6r7^6@7D2=0;0z4a0g2u2V823_1o3{2x2z2v1V1X2x0K1F850z3`7 0T0V0X0w04.
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

.128013,n -w*(eB3Cm=Rp)rh0kêDuois;cb/.S1vtqA_dg»:xéL«aIy2P+fl050N0i0J0V0z0$0A0d0C0$0V0A0A0n010J0z0p010406050A0x0m0m0V0r0X040G0y0$0x0`0y0c0d020V0m0p0B0d0o0i140r0K0x0i0A050E111315170 0p041v1C051F0E1F1H1C0 0N0z0I0/0;0?0^0s0z0O0s0$1V0s0J0}050*0D0$0i1Q0=0@011U1W1Y1W0J1(1*1$0J0D0y0N171%0r1D0J0s0/1a0A0p0V0c0^0Y011,1S010#0,0i0c1i0i1$27292e1.2h1*2k0m2m040a0d0Z0r0y0p0y0A0z1d1f0(250r0r0i0C2H1v2o0c1D0E232T0J2120220N2q0^1Y0c2j2E1$1N1P0:1-2%0z2)0c1}1O1$0p2M1D2R2T2~10281f2/2f2@0r140$0}0H2Q320~312p341.36380}0Y3c292T2{0i2T2-2W0N2!2$010C1}2w0%1O1D3q2}3d3n2S053z0(3G3g1R3i0}0R0M0Z3I040d3f333P0^0y0}0n3V3X2R3x0|040h3V3Y3x0c0}0V3)3;3h3#0}0g3_3+3{013?043S0L3 323x3$040!473O2:420}0D4d3Z4f4a3~1w3d3*4841433S0j4j490}4c4o3o4q4e350}0C4w414m4H3!4g440M0l3:404L3-0q4K4l0}0E4V2f3-3/4A3J4R4f433^4%3W3`4L4a4z2~4C4k4E044i4-4@4x4b4Z3Q044G4-4/4f4T3V0 4)4_0X3T503|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 0E3L3r1E2|1v3t1v0J3v6r2Y2U1|1~2W0V1)6m0E3t1B3N5)012M0m0M0#0V0u0i0M0s0k0}1n1p1r1t0d0Q3:1I3e1C0w290.1*0.6M2G0A0b0d2@0x0.1c0,0z0A0i2B0c0.2J0U0d0I0r0+0.0P250i0#2h0C0z2j0J0.0V0$0S0V0J0y0z2M0A0F0d0l0i0x0R0e7c0d0p7t0I7e0d0v2X1+0O0S0c0S0r0S0.280r0d0;0d0#1e2O0z1e3X6l3x1:1X1Z1#6G3=0}740c0N0y0m6!6l3W2j7S75290J6Y1E3e2-7!1Z1=1!2n680^2s2j2l0}2y0G0C0r0{7{0Z0X231e3:3F3Y2 3H7=603y0H0}030d0W1j0y0r7{2J7R7T0c7V8k6i8r0u430#2B7:545J0f0}3X8P8542437,7.8O5n8V8R4.8U5|8K0}0z8y8A5F8X298Z58598V0C8t048v0T6X3z797b7d0c7f0d7h7j7l7n1t588r4+5F4a5h5(7*048Y7/5{6H4#5;2~8^5|659f3%8:7+8=9m8)9o5l9q3d9s6H6d9v5g9x9k9z8!6f8V9p9c6k3A3p6o6D3D6F0T0V7S7U2H3X9#0s2M0#1T1@0p0A0Q0E6D0y0C7p0p8i0s1e0F8z0O0E8M0E0k0E1Y0D74160E9l0m0F1!0m0$03ac0Fac1$7Z417#827(9d9y7-9A309T3M1v0V3W2M0c0I7m1+0x1f2@0ma81+051o049:7t7.0e977k7m2M1vaO251j8e0.7e2M4}41152G0s140J0i0R0}090h0t099E4B0h2=0:6?0q0d0)a*4La,23a/a;a?0h0Ha`3)0ha;a 0q0F7}6j0(0*0,0A04.
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,n w5e(3m=Mp)rhkuoiscb/6S1vt_dg:xay24P+fNl050E0g0C0I0t0Q0u0d0v0Q0I0u0u0k010C0t0m010406050u0r0j0j0I0o0J040z0s0Q0r0+0s0c050x0=0@0_0{0:0m04141b051e0x1e1g1b0:0E0t0B0Z0#0%0)0p0t0F0p0Q1u0p0C0.050U0w0Q0g1p0$0(011t1v1x1v0C1D1F1B0C0w0s0E0{1C0o1c0C0p0Z0~0u0m0I0c0)0K011H1r010O0W0g0c0I0j0g1B1)1+1:1J1?1F1_1{0.0a0d0M0o0s0m0s0u0t110c0d0S1%0o0o0g0v2g141~0c1c0x1#2t0C1Z1Y1!0E200)1x0c1^2d1B1m1o0!1I2D0t2F0c1V1n1B0m2m1c2r2t2X0;1*2h2L1;2Q0o0^0Q0.0A2q2#0/2!1 2%1J2)2+0.0K2/1+2;2r2C012_0I2,040i2}2s0:302@0)33350L382 2#313e0.0f3h3a3j3c320s2*340.0y3h1d2V142J2w0E2A310v1V1|1c3C1f3A2Z152:053H0S2W3q1q1J0q0.0S0O3y3b3W0)0e0.0d3$3V2M320O0.0j0W0t0g0r3-2?3(010-040h3{2$3}0c0.0l42313 0b3h3,3%3/45040P483r3 0n0G3o0d4p4d3.2(0.0H0D473P2~2=433/4a4c4A3k0.0J4w4E4e1;0s0.0k4K4s2^464o4q4F3r4g4v4i4y2s4W3}4D4#044r3|4f4H0D4!2X4,4B4M4O4Q4-4t4h4U4p4%4.044v3?1x3_4`4@1J4N044P4*4?490.414*504|4v4x4=5j590.0N574G524:4j4(0.0n5s3r5a0x5A3}3?2{4~5e4X4/543^3`5d5o0)5a5c5n4L1J3 5h2Z5V3d4/5m2:5J3}5a5r5P5!324/4;3Q5.4l5E3/5C5^1;5G042|4*064q5)3/3Y042m0C0r0o135-4R0)5X5w51533@565i5?0.4b6c4{4S044I5M6k5Z6d3~5y3o143S0g2t2U6D3B1n3D2w2y2u1U1W2w0I1E6G0x3C0: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,n w5e(3m=Mp)rhkuoiscb/6S1vt_dg:xay24P+fNl050E0g0C0I0t0Q0u0d0v0Q0I0u0u0k010C0t0m010406050u0r0j0j0I0o0J040z0s0Q0r0+0s0c050x0=0@0_0{0:0m04141b051e0x1e1g1b0:0E0t0B0Z0#0%0)0p0t0F0p0Q1u0p0C0.050U0w0Q0g1p0$0(011t1v1x1v0C1D1F1B0C0w0s0E0{1C0o1c0C0p0Z0~0u0m0I0c0)0K011H1r010O0W0g0c0I0j0g1B1)1+1:1J1?1F1_1{0.0a0d0M0o0s0m0s0u0t110c0d0S1%0o0o0g0v2g141~0c1c0x1#2t0C1Z1Y1!0E200)1x0c1^2d1B1m1o0!1I2D0t2F0c1V1n1B0m2m1c2r2t2X0;1*2h2L1;2Q0o0^0Q0.0A2q2#0/2!1 2%1J2)2+0.0K2/1+2;2r2C012_0I2,040i2}2s0:302@0)33350L382 2#313e0.0f3h3a3j3c320s2*340.0y3h1d2V142J2w0E2A310v1V1|1c3C1f3A2Z152:053H0S2W3q1q1J0q0.0S0O3y3b3W0)0e0.0d3$3V2M320O0.0j0W0t0g0r3-2?3(010-040h3{2$3}0c0.0l42313 0b3h3,3%3/45040P483r3 0n0G3o0d4p4d3.2(0.0H0D473P2~2=433/4a4c4A3k0.0J4w4E4e1;0s0.0k4K4s2^464o4q4F3r4g4v4i4y2s4W3}4D4#044r3|4f4H0D4!2X4,4B4M4O4Q4-4t4h4U4p4%4.044v3?1x3_4`4@1J4N044P4*4?490.414*504|4v4x4=5j590.0N574G524:4j4(0.0n5s3r5a0x5A3}3?2{4~5e4X4/543^3`5d5o0)5a5c5n4L1J3 5h2Z5V3d4/5m2:5J3}5a5r5P5!324/4;3Q5.4l5E3/5C5^1;5G042|4*064q5)3/3Y042m0C0r0o135-4R0)5X5w51533@565i5?0.4b6c4{4S044I5M6k5Z6d3~5y3o143S0g2t2U6D3B1n3D2w2y2u1U1W2w0I1E6G0x3C0: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

.324.128013.339,%è w*5e(8CR0pkJoijc6TS1vqA{d:xIy24»fln-]9B3m=)rh[u}s;b/.àt_gLé«aôPQ+7050F0k0-0?0u0O0%0g0w0O0?0%0%0W010-0u0q010406050%0#0V0V0?0Y0J040z0t0O0#1c0t0P0g020?0V0q0(0g0o0k1m0Y0C0#0k0%050*1j1l1n1p1h0q041N1U051X0*1X1Z1U1h0F0u0B1416181a0Z0u0/0Z0O1;0Z0-1f050 0)0O0k1,1719011:1=1@1=0-1}1 1{0-0)0t0F1p1|0Y1V0-0Z141s0%0q0?0P1a0K01211.010N110k0P1A0k1{2p2r2w232z1 2C0V2E040b0g0^0Y0t0q0t0%0u1v1x0}2n0Y0Y0k0w2Z1N2G0P1V0*2l2/0-2j2i2k0F2I1a1@0P2B2W1{1)1+15222|0u2~0P2f1*1{0q2(1V2-2/3g1i2q1x342x390Y1m0O1f0g0A2,3k1g3j2H3m233o3q3s0K3v2r3x2-2{013C0?3r040g0U3G2.1h3J3A1a3M3O0g0L3S3I3k3K3Y3s0j3$3U3(3W3L0t3p3N3s0x3-3y3l1-3B3=3D3P0{3`3V3}3X3 3@3P0m433/453;3?3Z0S4b3z4d3*040A0p4i3|354e400A3u1O3w3.4j4r4l0A3F4w3H4y4q3n473O0A3R4E3T3{3)4J1f0A3#4N3%4z4I4f4S3,4V4G4Q4Z4m3_4$4P3:4B424,444A4R4m4a4;4c4?4)0A4h4`4X3~4)0K4o504H52400K4v3g4%4.4@0K4D5c4-4k5f4M5i4=4Y594U5n4{5p480K4#5s5146534+3i1!3e1N322=0F2_3K0w2f2O0|1*1V3d0k3f3w3$055M0}5U5z3L1f0P0)0.2V370-1M4V0g5j4r0t1f0W3$5:5o230V0u1f543-5d4d0w0A1f030g0:202?0u2r0/1 0g2#0)170k4p3)1f0D5_5;2x5?045^5/6q231e040l5W5{1a5}1f553i6C016y0d6p6I6E046G5V6I6y0X6l4.1f0T6M5t236s6u3g5`6!1a6y6A4V6w6D5~040j0p6Q3H6/6J1f6L6v6N6;6^2.6`6T6V4k1f0n6Z5#6$79576+1f6-6H6*016O5w715!7d6{046}6(6`6O0L0U5m6R7i74566m040%0t1l0~5.7s6I7b6~7z1f0!6B7i0P6n7Q5#6K7c7C6Y6.6S6|7X6W04787!7N040R754A1f0}18370k5*0t5,7U7o6,7|7C6o7+7V1f6U7B7(7=2X2~7_7{827}7f7 7(7Z7h8304855y7o7S04887@8b0P0-8g4d7~8d7C7*8j8e8l616`646668205+8u0g372Y6c0O0g3N0;0?0-7`2(7/3n1f0?7%4d7L7J7R1f0Y2r0F7F8w4r6,8m4x6`8p0)8%5=5@8|8!048-0P8/0V8;2x8?8Z3B1f0w8 6#8~7M5#8p9294966x7f8@4F8_1f0H0.818C3K7W9g8o1f0J9t9d1a8)3w6)9h7T8676049s8i7y8k7r9G9q049B9O3H9H7o9F9X9T9W4O6I8p9s8B9P8D9R9#9)9A0.9,9:7i9!2.9Y8A993X1f0^9D019`3P737f7g9-7C8$9y3K6s0ia29*9Cac3:6s0`ag1f8{aj8(1fafaq7:9M0.9%a57K1famau909caD9e04at8*9Iaw9@727#8EaG9E1f0*a28y9v7(abaK9ZaBan04apa!ada$aR5$04aFaX8x849/9{a66z9l9 04aZ9SaAaIa%9B9ua 9_a,a*7(a)b57aasb2axa2ala%a:bba#b1a-8p9BaN7n9w84bgaTaV8f8zaYbu04aCb89Lba9^bcbBbia{7p0X9o9(8+8q1L897^8L8vbya=a`bWava1bZ97bt4$624r8H046769133L5)bU0%2vb?0g1j0w0wbR0u0N7I8^6I0r1f0N3=a%0Pbg0h1f37ag0)8,6d6kb$9mbYa;av5(8t5-bK6T0G3-0gcv9|7(7E7G0-0.3N0k8V8XcibD8}6tbi0Z7`b}crbxcm90cz2Ncqcj7eaQ5ccwcx9Lb#cI6r9fc(9a045}1@0k0#cPcla97(c%c@bXa@azbPcT0~cC1 cF0u8YcWbLcucw9T8r8abUc=a86_9;04c_dg7,bN3x0*5Y5T1W5F0*5H1N0-5Jdv2@2:2e2g2=0?1~dqdt5Q1Tbr3:2(0V0.0N0?0r7^0Z0U1f1F1H1J1L0gct6.1!3x1U0:0?0g2z0/0#2(0g0t0)0-2B1K0g2(181GdFd,3=d@2N8M0?0#5:d+0Z2(0N1/290q0%0G0*0*0N0Y0+0h0u0r1d0k1)0?0+3=0/0*elen0*0y0Y6c0P6e7^0}0.0z0u0k0Y0q0u0e0n0j0e0m0L0%en2v0 0Y0/0~1a0.1~2rc41V1G046b6d6f2#eHeJeL0aeT0J1Ne*1N0?040+1Wd(04690g3d0tb}180#132#5M0P0%2?0#2*0u1w0gdY0g39f80g0B2 fc6g20cU2?202B0g0c0#0Bd:0%000?0q0q0k0O6f6f05e7e9eb0-edefehejeweoeqeseXevem0u0*0sc:0.0F0#0.0w0Z0?300geWeY0-e!e$0Pe(0vc:6ge5f.f:5.e|0+0g0I8R1L0-f32W2Xd~2#6fe2eJ0g0,f31n1c0Yfsgb0O0J0/1wdZ5M1B0 8M0#1x390V0)d:dY0Ofbfkfa0@0-0;0%e~d%dJeH14200wgL0;0gg9fl0tgMc#4r1n2Y0Z1md@0H1f090l0P09dm0d8S0O3=0%g^0q16b}gogkg1fk0;0 fH0g6ffmfpe4gb5,g%2xg)2lg,0kg.04g:0^g?5_hc6`hhg+8Vhkg/0l090Fei0?0w0E0P0$hE0`0U0$hp4V0Q0u0f2Nf b`0k0/e2gafH3p0~6g00d=d@0Pd40ggA200=0g0v1seI0g0Md,1;d/0kg50^0td/hf23hthjhlg:2s0UhL3gg^fi2(2?h}fp0g0)eI1xgg11eIe50Gh 1ai1hvi3hyhA8-hDhJ0E0UhI0$0WhzhB640Ki73wgP1%1Y2/1Xb}8ueJ3xd+3:6e1^2d0tg.6g8V0?0Q0-0JfH1a0u1meY2v0Fi!0Qel0F2lip1u5?iZ0 0Q0Z0kiVi^8W2ve80kea01i+0?eY0%0*0L0+0%0B0/i.i:7=0w0Q2V2X2Z1a2e297F1{i+0/g_f^010_0#8Vd:gVgMb@b`0Y0wi*i,1Ljcjejg2vi=i@010U0p0e1{0*e|e63KiU282eiYi/i|i%i)j7jLjii|jR0Zj1i`j*i#i~j001e4j20gj4j6j8ja0*0jjOjhi{i#jkjm2W8P1wjqg#8W0Vju0Vjw3Njy0n370C14gWjG0%jIjKj9jMk6jfk8j=1ajUjW2/jZfMj#271_j(j:i#j,0kkxi-k9i;0ui?j?j}i_kOi}i 28j@j3fOj.kyjb0xk7k#kbjnke2s01jrkikkkm0OjyeH0HksjF2vkvjJk,k4k/kBjQkWjSkFjXe|1hdo2Bd@2@1$dn0}0 110%04.
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

.324.128013.339,%è w*5e(8CR0pkJoijc6TS1vqA{d:xIy24»fln-]9B3m=)rh[u}s;b/.àt_gLé«aôPQ+7050F0k0-0?0u0O0%0g0w0O0?0%0%0W010-0u0q010406050%0#0V0V0?0Y0J040z0t0O0#1c0t0P0g020?0V0q0(0g0o0k1m0Y0C0#0k0%050*1j1l1n1p1h0q041N1U051X0*1X1Z1U1h0F0u0B1416181a0Z0u0/0Z0O1;0Z0-1f050 0)0O0k1,1719011:1=1@1=0-1}1 1{0-0)0t0F1p1|0Y1V0-0Z141s0%0q0?0P1a0K01211.010N110k0P1A0k1{2p2r2w232z1 2C0V2E040b0g0^0Y0t0q0t0%0u1v1x0}2n0Y0Y0k0w2Z1N2G0P1V0*2l2/0-2j2i2k0F2I1a1@0P2B2W1{1)1+15222|0u2~0P2f1*1{0q2(1V2-2/3g1i2q1x342x390Y1m0O1f0g0A2,3k1g3j2H3m233o3q3s0K3v2r3x2-2{013C0?3r040g0U3G2.1h3J3A1a3M3O0g0L3S3I3k3K3Y3s0j3$3U3(3W3L0t3p3N3s0x3-3y3l1-3B3=3D3P0{3`3V3}3X3 3@3P0m433/453;3?3Z0S4b3z4d3*040A0p4i3|354e400A3u1O3w3.4j4r4l0A3F4w3H4y4q3n473O0A3R4E3T3{3)4J1f0A3#4N3%4z4I4f4S3,4V4G4Q4Z4m3_4$4P3:4B424,444A4R4m4a4;4c4?4)0A4h4`4X3~4)0K4o504H52400K4v3g4%4.4@0K4D5c4-4k5f4M5i4=4Y594U5n4{5p480K4#5s5146534+5y575A594:5D4(594_3i1!3e1N322=0F2_3K0w2f2O0|1*1V3d0k3f3w3$055V0}5%5z010r0P1f0N2T0V5)5o230h3s5_5t3B5;040Y2r0F0t5^4V5j4r5|3P5~5.5:1f0u1B3=0-3$0g693n1f0w0Z0t0u0w0k6d5E011e040d6l6n3B1f630P65675c5d4k1f0P0)0.2V370-1M4V6m5`1a0t1f0W6C6X010V0u1f543-6L4r0w0A1f030g0:202?0u2r0/1 0g2#0)176v563)1f0D6$5 6Y6!785.6z0l6w3K6)1f553i6%6z6B6V6D1a7i047k5(7m1f0X4p75040T7c6x6Z046#7p7w047f686%7s0j0p7u3H7q6y1f7o3g6W796(6*7t7g3:6z7y744.1f0n7D3K7F7H7X7T7e7%4d7s5w7R2.7@7V7/3:7s0L0U5m7v7Z7)7z7,040%662N6T814d7;8h4r6z0!7_4A768o2x7n8k6o7B8r238t7I7Z617.7M881f0R8a6M040}18370k6Q6s0P6k8E7d1f7L7l8B8q8T6x897+8J8L2X2~8P6S8x1a7^8!7A7C8;7(7x8I8p8K1L8*8O6R8R8.7U7K928C928$6K7T6:6=6@20900-0g372Y6{0O0g3N0;0?0-6s2(8`8v0?8u238j8A5.616G6I978V7*5I8b0)9w7a7G9K3L6F64669E7K9G4x7T610w9N9y7?6%9B9Q6J878U9T9t6E040H0.778@4d8z9#8Y040J9;9Z7b9z6x619=9H8J9:8?8X9+7W3w7Y9A1f9|a7ab7T9!ah9$1fag4F9W1f9:8Da88#80a07A9|asak7Zaj3Haca17-9-3X1f0^9~9Maw8^7K8W9*aF049vaN8i1f0i9N619:a3aA5.7F0`aZ1f9JaV4r7FaYa.8va6aLa*a=9.9Ya`9La;9_ad9/0.az7S7J9UaDai1f0*9N8:at7AaUb07E1fa_bh7Aa-bl3:a)a+04a|beaO0Xaab87JaQb59`bga%bi04a bEax9}a}01bqbL61bnbIbpaXbrafa^brbtbRaWbGbUb39Sb72.aE7:babc8V951fbDbyaBbjbrbQb?a(b^bO6pb(b)4WaS8)8N8,919?8lb/c88vaKcb8y8_4$6.2x9b046?6^133L6P9f0%2vcr0g1j0w6u8M0N6Ua44r0r5=3=br0P9Z6b37aZ0)9P0P0/73bu9@cacS8{6Oc68gce8/7x0G3-0gc)b+8b8d1l0~0.3N0k9p9rcRbZa/9 bo8J6q6s6u9SbA7~al8c8e0~cBaR3K984xc*c+8Jcdc|c`aMdh8v6)1@0k0#d1b:04dgd9aObxb*apd5c.0-c:1 c?0u9sc!93c106dddyc48+9fdqdH61dtbB9+dJ1N5+5$1W5O0*5Q1N0-5Sd(2@2:2e2g2=0?1~dZd$5Z1T5-6x2(0V0.0N0?0r8O0Z0U1f1F1H1J1L0gc%681!3x1U0:0?0g2z0/0#2(0g0t0)0-2B1K0g2(181Gd=ei6j1G2B9g0?0#6meh0Z2(0N1/290q0%0G0*0*5?0+0h0u0r1d0k1)0?0+3=0/0*eTeV0*0y0Y6{cP1 0.0}0.0z0u0k0Y0q0u0e0n0j0e0m0L0%eV2v0 0YcQ0-1a0.1~2rcE1V1G046`6|6~2#e?e^e`0af20J1Nff1N0?040+1Wee046^0g3d0tcy1j132#5V0P0%2?0#2*0u1w0ge80g390#130B2 fJ6 208f2?202B0g0c0#0Bem0%000?0q0q0k0O6~6~05eGeIeK0-eMeOeQ0YeSeUeWeYe!f6e%g40*0sdoe:0#0.6q0?300gf5f7f9fb0Pfd0vdo6 eEgh2Wftfv0g0I9l1L9g2V8Mex2#6~2N2~0Y0g0,fB1n1cgL2#2V0O0J0/1we95V1B0 8R0g0#1x390V0)eme80OfIfRfH0@0-0;0%fwedd_e?14200wg?0;0ggCfS0tg@de4r1n2Y0Z1meq0H1f090l0P09c10d9m0O3=0%hm0q166ugLgNghfR0;0 f=0g6~fTfWeDfB8Q9g7Tha2lhd0khf04hh0^hk6lhGhKe,hM9phOhg0l090F5?0?0w0E0P0$h,0`0U0$hT4V0Q0u0f2Ngtcv0k0/gJgDe^8f6 00eoeq0PdFg%2~0g0=0g0v1se@0g0Mei1;el0k0+2R0telh82xhLhchZhPhh2s0Uh?3ghmfP2(2?iqfW0g0)e@1xgI11e@eE0Gis23iuhNixh$h(63h+h;0E0Uh:0$0Wh%h)6:0KiB3wg`1%1Y2/1X6u8Re^3xeh3:6}1^2d0thf6 9p0?0Q0-0Jf=1a6h0?cQ2v0Fj50QeT0F2l1aeD9qjfjh0Z0kj0jm1u6Z0geH0keJ01jccQ0%0*0L0+0%0B0/jp0 0Q8L0w0QgE9j1w1a2e29661{6h0/hnf8010_0#9pemh0g@cscv0Y0wjb1mjDjFjHjJ2vjjjl010U0p0e1{0*fueF3Ki 282ej3jgjMj8jajBj?2Ej4jMj|0Zjujokij6jrjt01jnjwjyjAjC1L0*0jj_jKkojN1LjPjR2ZjUh69q0VjY0Vj!3Nj$0n370C14h1j.0%j:j=jdkykAjIkCkk1aj k12/k4f`k6271_k9jLj6kd0kk!jekDk*ksjvk^0Qkq28kmkuf|kfk#jE0xkBl2jOjQ2WjS2s01jVkLkNkP0Oj$e?0HkVj-2vkYj;l9j@lck(j{0ujkklj~k0k2fu1h0*i_eq2@1$3xd$0~101204.
Votre figure

Votre tracé sera ici