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

.128013buS,3_4l(wnx/8p)aPk0:hors1v7c256mgydi9eft =050K0N0P0r0L0i0z0Q0D0i0r0z0z0R010P0L0p010406050z0c0H0H0r0y0J040d0x0i0c0,0x0l050n0?0^0`0|0;0p04151c051f0n1f1h1c0;0K0L0B0!0$0(0*0w0L0I0w0i1v0w0P0/050V0b0i0N1q0%0)011u1w1y1w0P1E1G1C0P0b0x0K0|1D0y1d0P0w0!0 0z0p0r0l0*0E011I1s010O0X0N0l0r0H0N1C1*1,1;1K1@1G1`1|0/0a0Q0s0y0x0p0x0z0L120l0Q0T1(0y0y0N0D2h151 0l1d0n1$2u0P1!1Z1#0K210*1y0l1_2e1C1n1p0#1J2E0L2G0l1W1o1C0p2n1d2s2u2Y0=1+2i2M1=2R0y0_0i0/0Q0A2r2$0:2#202(1K2*2,2.0E2;1,2?2s2D012{0r2-040Q0f2 2t0;322_0*35370Q0h3b312$333h2.0F3l3d3n3f340x2+362.0G3s2@2%1r2`3x2|380C3C3e3F3g3H3z380o3L3u3N3w3y3i0M3T2^3V3p040A0u3!3E2N3W3I0A2:162=1e2W152K2x0K2B330D1W1}1d3`1g3^2!3=30053 0T2X3U3-0t0/0O3x3l0Q3D3o0/0m4j4l3v0x0k0/2P4p3M3-0l0b0/0y1,0I0N3l4q3V0.040j4G4x1=0H0L0/3*472t4H3-4J0e4w4d4O4Q040h0u3;2!4N1K4X4Z3#3-4P0/0E4S4+4!4-0/0q0v3s0Q504k4,3g0/0s4/3,1=0x0/0R57334J4L4T4c4:2)4n4M4`0*4.5h525n014=044^3?53014J0q4 514V5k040T0(2P0N0g2d2P0P5m5j4{4K5P582`555T5e4|5C505E5V04565q5$0*5a045c5*5y5f5X3v0l5l5h5+5z0/4Y5:5s5u4@5w485;5Z5h06515r5Q545G0N5I2G5L0x5N5?4I0/5g4_6b345W5`65045B673t6p4f044h0y5d5@0/0J6D3V4s4u145 6p4z4B4D4F6s5s5=6S6p5u634U6t5~2Y6a5U0*614)6k4W5}6H4;4$4@6,1=5A4~67695{5^5(6/595b6 5R6n5x604$6Y5i6(5|046#2=6%4m046G6V7a5A5!7f6E6d6f5K5M0l5O7j5Y5S7v7o5)6o7k662Y685D5y6}7A7e5{5-5/6$5{6U7B335u4(787P6.6M7a6}7i7R3v7l6`7G5s6}5H2f6g7s7u7$6l7x7=4y6r7^6@7D2=0;0n4a0N2u2V823_1o3{2x2z2v1V1X2x0r1F850n3`7 0T0V0X0z04.
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

.128013buS«-,_3B.l»(êwnx/R)pIaPkéL;:0horCsD1*vc2qmAgydieft =+050V0X0Z0x0W0l0J0!0O0l0x0J0J0#010Z0W0v010406050J0c0R0R0x0H0U040d0G0l0c0`0G0q0!020x0R0v0C0!0t0X140H0Q0c0X0J050s111315170 0v041v1C051F0s1F1H1C0 0V0W0N0/0;0?0^0F0W0T0F0l1V0F0Z0}050*0b0l0X1Q0=0@011U1W1Y1W0Z1(1*1$0Z0b0G0V171%0H1D0Z0F0/1a0J0v0x0q0^0P011,1S010Y0,0X0q1i0X1$27292e1.2h1*2k0R2m040a0!0y0H0G0v0G0J0W1d1f0(250H0H0X0O2H1v2o0q1D0s232T0Z2120220V2q0^1Y0q2j2E1$1N1P0:1-2%0W2)0q1}1O1$0v2M1D2R2T2~10281f2/2f2@0H140l0}0L2Q320~312p341.36380}0P3c292T2{0X2T2-2W0V2!2$010O1}2w0%1O1D3q2}3d3n2S053z0(3G3g1R3i0}0r0h0y3I040!3f333P0^0G0}0#3V3X2R3x0|040n3V3Y3x0q0}0x3)3;3h3#0}0M3_3+3{013?043S0S3 323x3$040$473O2:420}0b4d3Z4f4a3~1w3d3*4841433S0j4j490}4c4o3o4q4e350}0O4w414m4H3!4g440h0I3:404L3-0u4K4l0}0s4V2f3-3/4A3J4R4f433^4%3W3`4L4a4z2~4C4k4E044i4-4@4x4b4Z3Q044G4-4/4f4T3V0 4)4_0U3T503|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 0s3L3r1E2|1v3t1v0Z3v6r2Y2U1|1~2W0x1)6m0s3t1B3N5)012M0R0h0Y0x0z0X0h0F0i0}1n1p1r1t0!0D3:1I3e1C0K290.1*0.6M2G0J0g0!2@0c0.1c0,0W0J0X2B0q0.2J0e0!0N0H0+0.0m250X0Y2h0O0W2j0Z0.0x0l0A0x0Z0G0W2M0J0k0!0I0X0c0r0f7c0!0v7t0N7e0!0o2X1+0T0A0q0A0H0A0.280H0!0;0!0Y1e2O0W1e3X6l3x1:1X1Z1#6G3=0}740q0V0G0R6!6l3W2j7S75290Z6Y1E3e2-7!1Z1=1!2n680^2s2j2l0}2y0d0O0H0{7{0y0U231e3:3F3Y2 3H7=603y0L0}030!0w1j0G0H7{2J7R7T0q7V8k6i8r0z430Y2B7:545J0p0}3X8P8542437,7.8O5n8V8R4.8U5|8K0}0W8y8A5F8X298Z58598V0O8t048v0B6X3z797b7d0q7f0!7h7j7l7n1t588r4+5F4a5h5(7*048Y7/5{6H4#5;2~8^5|659f3%8:7+8=9m8)9o5l9q3d9s6H6d9v5g9x9k9z8!6f8V9p9c6k3A3p6o6D3D6F0B0x7S7U2H3X9#0F2M0Y1T1@0v0J0D0s6D0G0O7p0v8i0F1e0k8z0T0s8M0s0i0s1Y0b74160s9l0R0k1!0R0l03ac0kac1$7Z417#827(9d9y7-9A309T3M1v0x3W2M0q0N7m1+0c1f2@0Ra81+051o049:7t7.0f977k7m2M1vaO251j8e0.7e2M4}41152G0F140Z0X0r0}090n0E099E4B0n2=0:6?0u0!0)a*4La,23a/a;a?0n0La`3)0na;a 0u0k7}6j0(0*0,0J04.
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

.128013buS,3_4l(Mwnx/)paPk:hors1vc256mgydieNft =+050I0K0N0r0J0i0y0O0B0i0r0y0y0P010N0J0q010406050y0c0F0F0r0x0H040d0w0i0c0+0w0m050o0=0@0_0{0:0q04141b051e0o1e1g1b0:0I0J0A0Z0#0%0)0v0J0G0v0i1u0v0N0.050U0b0i0K1p0$0(011t1v1x1v0N1D1F1B0N0b0w0I0{1C0x1c0N0v0Z0~0y0q0r0m0)0C011H1r010M0W0K0m0r0F0K1B1)1+1:1J1?1F1_1{0.0a0O0s0x0w0q0w0y0J110m0O0S1%0x0x0K0B2g141~0m1c0o1#2t0N1Z1Y1!0I200)1x0m1^2d1B1m1o0!1I2D0J2F0m1V1n1B0q2m1c2r2t2X0;1*2h2L1;2Q0x0^0i0.0z2q2#0/2!1 2%1J2)2+0.0C2/1+2;2r2C012_0r2,040f2}2s0:302@0)33350h382 2#313e0.0D3h3a3j3c320w2*340.0E3h1d2V142J2w0I2A310B1V1|1c3C1f3A2Z152:053H0S2W3q1q1J0t0.0S0M3y3b3W0)0l0.0O3$3V2M320M0.0F0W0J0K0c3-2?3(010-040j3{2$3}0m0.0k42313 0e3h3,3%3/45040L483r3 0p0u3o0O4p4d3.2(0.0n0g473P2~2=433/4a4c4A3k0.0H4w4E4e1;0w0.0P4K4s2^464o4q4F3r4g4v4i4y2s4W3}4D4#044r3|4f4H0g4!2X4,4B4M4O4Q4-4t4h4U4p4%4.044v3?1x3_4`4@1J4N044P4*4?490.414*504|4v4x4=5j590.0Q574G524:4j4(0.0p5s3r5a0o5A3}3?2{4~5e4X4/543^3`5d5o0)5a5c5n4L1J3 5h2Z5V3d4/5m2:5J3}5a5r5P5!324/4;3Q5.4l5E3/5C5^1;5G042|4*064q5)3/3Y042m0N0c0x135-4R0)5X5w51533@565i5?0.4b6c4{4S044I5M6k5Z6d3~5y3o143S0K2t2U6D3B1n3D2w2y2u1U1W2w0r1E6G0o3C0: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

.128013buS,3_4l(Mwnx/)paPk:hors1vc256mgydieNft =+050I0K0N0r0J0i0y0O0B0i0r0y0y0P010N0J0q010406050y0c0F0F0r0x0H040d0w0i0c0+0w0m050o0=0@0_0{0:0q04141b051e0o1e1g1b0:0I0J0A0Z0#0%0)0v0J0G0v0i1u0v0N0.050U0b0i0K1p0$0(011t1v1x1v0N1D1F1B0N0b0w0I0{1C0x1c0N0v0Z0~0y0q0r0m0)0C011H1r010M0W0K0m0r0F0K1B1)1+1:1J1?1F1_1{0.0a0O0s0x0w0q0w0y0J110m0O0S1%0x0x0K0B2g141~0m1c0o1#2t0N1Z1Y1!0I200)1x0m1^2d1B1m1o0!1I2D0J2F0m1V1n1B0q2m1c2r2t2X0;1*2h2L1;2Q0x0^0i0.0z2q2#0/2!1 2%1J2)2+0.0C2/1+2;2r2C012_0r2,040f2}2s0:302@0)33350h382 2#313e0.0D3h3a3j3c320w2*340.0E3h1d2V142J2w0I2A310B1V1|1c3C1f3A2Z152:053H0S2W3q1q1J0t0.0S0M3y3b3W0)0l0.0O3$3V2M320M0.0F0W0J0K0c3-2?3(010-040j3{2$3}0m0.0k42313 0e3h3,3%3/45040L483r3 0p0u3o0O4p4d3.2(0.0n0g473P2~2=433/4a4c4A3k0.0H4w4E4e1;0w0.0P4K4s2^464o4q4F3r4g4v4i4y2s4W3}4D4#044r3|4f4H0g4!2X4,4B4M4O4Q4-4t4h4U4p4%4.044v3?1x3_4`4@1J4N044P4*4?490.414*504|4v4x4=5j590.0Q574G524:4j4(0.0p5s3r5a0o5A3}3?2{4~5e4X4/543^3`5d5o0)5a5c5n4L1J3 5h2Z5V3d4/5m2:5J3}5a5r5P5!324/4;3Q5.4l5E3/5C5^1;5G042|4*064q5)3/3Y042m0N0c0x135-4R0)5X5w51533@565i5?0.4b6c4{4S044I5M6k5Z6d3~5y3o143S0K2t2U6D3B1n3D2w2y2u1U1W2w0r1E6G0o3C0: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à«[3Bè.4»QnxJ/R8p)IL0hC*v72c5Aô6g%9f=buS-T,_l(waPké;:ors1qmyd]ji{ }te+050/0`0_0Y0=0V0*0@0E0V0Y0*0*0N010_0=0t010406050*0P0-0-0Y0)0.040Q0(0V0P1c0(0n0@020Y0-0t0$0@0r0`1m0)0,0P0`0*050q1j1l1n1p1h0t041N1U051X0q1X1Z1U1h0/0=0B1416181a0y0=0J0y0V1;0y0_1f050 0O0V0`1,1719011:1=1@1=0_1}1 1{0_0O0(0/1p1|0)1V0_0y141s0*0t0Y0n1a0D01211.010M110`0n1A0`1{2p2r2w232z1 2C0-2E040b0@0Z0)0(0t0(0*0=1v1x0}2n0)0)0`0E2Z1N2G0n1V0q2l2/0_2j2i2k0/2I1a1@0n2B2W1{1)1+15222|0=2~0n2f1*1{0t2(1V2-2/3g1i2q1x342x390)1m0V1f0@0+2,3k1g3j2H3m233o3q3s0D3v2r3x2-2{013C0Y3r040@0g3G2.1h3J3A1a3M3O0@0k3S3I3k3K3Y3s0F3$3U3(3W3L0(3p3N3s0I3-3y3l1-3B3=3D3P0C3`3V3}3X3 3@3P0s433/453;3?3Z0L4b3z4d3*040+0x4i3|354e400+3u1O3w3.4j4r4l0+3F4w3H4y4q3n473O0+3R4E3T3{3)4J1f0+3#4N3%4z4I4f4S3,4V4G4Q4Z4m3_4$4P3:4B424,444A4R4m4a4;4c4?4)0+4h4`4X3~4)0D4o504H52400D4v3g4%4.4@0D4D5c4-4k5f4M5i4=4Y594U5n4{5p480D4#5s5146534+3i1!3e1N322=0/2_3K0E2f2O0|1*1V3d0`3f3w3$055M0}5U5z3L1f0n0O0U2V370_1M4V0@5j4r0(1f0N3$5:5o230-0=1f543-5d4d0E0+1f030@0w202?0=2r0J1 0@2#0O170`4p3)1f0G5_5;2x5?045^5/6q231e040W5W5{1a5}1f553i6C016y0T6p6I6E046G5V6I6y0u6l4.1f0h6M5t236s6u3g5`6!1a6y6A4V6w6D5~040F0x6Q3H6/6J1f6L6v6N6;6^2.6`6T6V4k1f0z6Z5#6$79576+1f6-6H6*016O5w715!7d6{046}6(6`6O0k0g5m6R7i74566m040*0(1l0~5.7s6I7b6~7z1f0f6B7i0n6n7Q5#6K7c7C6Y6.6S6|7X6W04787!7N040:754A1f0}18370`5*0(5,7U7o6,7|7C6o7+7V1f6U7B7(7=2X2~7_7{827}7f7 7(7Z7h8304855y7o7S04887@8b0n0_8g4d7~8d7C7*8j8e8l616`646668205+8u0@372Y6c0V0@3N0#0Y0_7`2(7/3n1f0Y7%4d7L7J7R1f0)2r0/7F8w4r6,8m4x6`8p0O8%5=5@8|8!048-0n8/0-8;2x8?8Z3B1f0E8 6#8~7M5#8p9294966x7f8@4F8_1f0o0U818C3K7W9g8o1f0.9t9d1a8)3w6)9h7T8676049s8i7y8k7r9G9q049B9O3H9H7o9F9X9T9W4O6I8p9s8B9P8D9R9#9)9A0U9,9:7i9!2.9Y8A993X1f0Z9D019`3P737f7g9-7C8$9y3K6s0Aa29*9Cac3:6s0{ag1f8{aj8(1fafaq7:9M0U9%a57K1famau909caD9e04at8*9Iaw9@727#8EaG9E1f0qa28y9v7(abaK9ZaBan04apa!ada$aR5$04aFaX8x849/9{a66z9l9 04aZ9SaAaIa%9B9ua 9_a,a*7(a)b57aasb2axa2ala%a:bba#b1a-8p9BaN7n9w84bgaTaV8f8zaYbu04aCb89Lba9^bcbBbia{7p0u9o9(8+8q1L897^8L8vbya=a`bWava1bZ97bt4$624r8H046769133L5)bU0*2vb?0@1j0E0EbR0=0M7I8^6I0!1f0M3=a%0nbg0X1f37ag0O8,6d6kb$9mbYa;av5(8t5-bK6T0%3-0@cv9|7(7E7G0_0U3N0`8V8XcibD8}6tbi0y7`b}crbxcm90cz2Ncqcj7eaQ5ccwcx9Lb#cI6r9fc(9a045}1@0`0PcPcla97(c%c@bXa@azbPcT0~cC1 cF0=8YcWbLcucw9T8r8abUc=a86_9;04c_dg7,bN3x0q5Y5T1W5F0q5H1N0_5Jdv2@2:2e2g2=0Y1~dqdt5Q1Tbr3:2(0-0U0M0Y0!7^0y0g1f1F1H1J1L0@ct6.1!3x1U0w0Y0@2z0J0P2(0@0(0O0_2B1K0@2(181GdFd,3=d@2N8M0Y0P5:d+0y2(0M1/290t0*0%0q0q0M0)0j0X0=0!1d0`1)0Y0j3=0J0qelen0q0S0)6c0n6e7^0}0U0Q0=0`0)0t0=0K0z0F0K0s0k0*en2v0 0)0J0~1a0U1~2rc41V1G046b6d6f2#eHeJeL0aeT0.1Ne*1N0Y040j1Wd(04690@3d0(b}180P132#5M0n0*2?0P2*0=1w0@dY0@39f80@0B2 fc6g20cU2?202B0@0c0P0Bd:0*000Y0t0t0`0V6f6f05e7e9eb0_edefehejeweoeqeseXevem0=0q0pc:0U0/0P0U0E0y0Y300@eWeY0_e!e$0ne(0;c:6ge5f.f:5.e|0j0@0v8R1L0_f32W2Xd~2#6fe2eJ0@0df31n1c0)fsgb0V0.0J1wdZ5M1B0 8M0P1x390-0Od:dY0Vfbfkfa0H0_0#0*e~d%dJeH14200EgL0#0@g9fl0(gMc#4r1n2Y0y1md@0o1f090W0n09dm0T8S0V3=0*g^0t16b}gogkg1fk0#0 fH0@6ffmfpe4gb5,g%2xg)2lg,0`g.04g:0Zg?5_hc6`hhg+8Vhkg/0W090/ei0Y0E0?0n0^hE0{0g0^hp4V0R0=0i2Nf b`0`0Je2gafH3p0~6g00d=d@0nd40@gA200e0@0;1seI0@0ld,1;d/0`g50Z0(d/hf23hthjhlg:2s0ghL3gg^fi2(2?h}fp0@0OeI1xgg11eIe50%h 1ai1hvi3hyhA8-hDhJ0?0ghI0^0NhzhB640Di73wgP1%1Y2/1Xb}8ueJ3xd+3:6e1^2d0(g.6g8V0Y0R0_0.fH1a0=1meY2v0/i!0Rel0/2lip1u5?iZ0 0R0y0`iVi^8W2ve80`ea01i+0YeY0*0q0k0j0*0B0Ji.i:7=0E0R2V2X2Z1a2e297F1{i+0Jg_f^010m0P8Vd:gVgMb@b`0)0Ei*i,1Ljcjejg2vi=i@010g0x0K1{0qe|e63KiU282eiYi/i|i%i)j7jLjii|jR0yj1i`j*i#i~j001e4j20@j4j6j8ja0q0FjOjhi{i#jkjm2W8P1wjqg#8W0-ju0-jw3Njy0z370,14gWjG0*jIjKj9jMk6jfk8j=1ajUjW2/jZfMj#271_j(j:i#j,0`kxi-k9i;0=i?j?j}i_kOi}i 28j@j3fOj.kyjb0Ik7k#kbjnke2s01jrkikkkm0VjyeH0oksjF2vkvjJk,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à«[3Bè.4»QnxJ/R8p)IL0hC*v72c5Aô6g%9f=buS-T,_l(waPké;:ors1qmyd]ji{ }te+050/0`0_0Y0=0V0*0@0E0V0Y0*0*0N010_0=0t010406050*0P0-0-0Y0)0.040Q0(0V0P1c0(0n0@020Y0-0t0$0@0r0`1m0)0,0P0`0*050q1j1l1n1p1h0t041N1U051X0q1X1Z1U1h0/0=0B1416181a0y0=0J0y0V1;0y0_1f050 0O0V0`1,1719011:1=1@1=0_1}1 1{0_0O0(0/1p1|0)1V0_0y141s0*0t0Y0n1a0D01211.010M110`0n1A0`1{2p2r2w232z1 2C0-2E040b0@0Z0)0(0t0(0*0=1v1x0}2n0)0)0`0E2Z1N2G0n1V0q2l2/0_2j2i2k0/2I1a1@0n2B2W1{1)1+15222|0=2~0n2f1*1{0t2(1V2-2/3g1i2q1x342x390)1m0V1f0@0+2,3k1g3j2H3m233o3q3s0D3v2r3x2-2{013C0Y3r040@0g3G2.1h3J3A1a3M3O0@0k3S3I3k3K3Y3s0F3$3U3(3W3L0(3p3N3s0I3-3y3l1-3B3=3D3P0C3`3V3}3X3 3@3P0s433/453;3?3Z0L4b3z4d3*040+0x4i3|354e400+3u1O3w3.4j4r4l0+3F4w3H4y4q3n473O0+3R4E3T3{3)4J1f0+3#4N3%4z4I4f4S3,4V4G4Q4Z4m3_4$4P3:4B424,444A4R4m4a4;4c4?4)0+4h4`4X3~4)0D4o504H52400D4v3g4%4.4@0D4D5c4-4k5f4M5i4=4Y594U5n4{5p480D4#5s5146534+5y575A594:5D4(594_3i1!3e1N322=0/2_3K0E2f2O0|1*1V3d0`3f3w3$055V0}5%5z010!0n1f0M2T0-5)5o230X3s5_5t3B5;040)2r0/0(5^4V5j4r5|3P5~5.5:1f0=1B3=0_3$0@693n1f0E0y0(0=0E0`6d5E011e040T6l6n3B1f630n65675c5d4k1f0n0O0U2V370_1M4V6m5`1a0(1f0N6C6X010-0=1f543-6L4r0E0+1f030@0w202?0=2r0J1 0@2#0O176v563)1f0G6$5 6Y6!785.6z0W6w3K6)1f553i6%6z6B6V6D1a7i047k5(7m1f0u4p75040h7c6x6Z046#7p7w047f686%7s0F0x7u3H7q6y1f7o3g6W796(6*7t7g3:6z7y744.1f0z7D3K7F7H7X7T7e7%4d7s5w7R2.7@7V7/3:7s0k0g5m7v7Z7)7z7,040*662N6T814d7;8h4r6z0f7_4A768o2x7n8k6o7B8r238t7I7Z617.7M881f0:8a6M040}18370`6Q6s0n6k8E7d1f7L7l8B8q8T6x897+8J8L2X2~8P6S8x1a7^8!7A7C8;7(7x8I8p8K1L8*8O6R8R8.7U7K928C928$6K7T6:6=6@20900_0@372Y6{0V0@3N0#0Y0_6s2(8`8v0Y8u238j8A5.616G6I978V7*5I8b0O9w7a7G9K3L6F64669E7K9G4x7T610E9N9y7?6%9B9Q6J878U9T9t6E040o0U778@4d8z9#8Y040.9;9Z7b9z6x619=9H8J9:8?8X9+7W3w7Y9A1f9|a7ab7T9!ah9$1fag4F9W1f9:8Da88#80a07A9|asak7Zaj3Haca17-9-3X1f0Z9~9Maw8^7K8W9*aF049vaN8i1f0A9N619:a3aA5.7F0{aZ1f9JaV4r7FaYa.8va6aLa*a=9.9Ya`9La;9_ad9/0Uaz7S7J9UaDai1f0q9N8:at7AaUb07E1fa_bh7Aa-bl3:a)a+04a|beaO0uaab87JaQb59`bga%bi04a bEax9}a}01bqbL61bnbIbpaXbrafa^brbtbRaWbGbUb39Sb72.aE7:babc8V951fbDbyaBbjbrbQb?a(b^bO6pb(b)4WaS8)8N8,919?8lb/c88vaKcb8y8_4$6.2x9b046?6^133L6P9f0*2vcr0@1j0E6u8M0M6Ua44r0!5=3=br0n9Z6b37aZ0O9P0n0J73bu9@cacS8{6Oc68gce8/7x0%3-0@c)b+8b8d1l0~0U3N0`9p9rcRbZa/9 bo8J6q6s6u9SbA7~al8c8e0~cBaR3K984xc*c+8Jcdc|c`aMdh8v6)1@0`0Pd1b:04dgd9aObxb*apd5c.0_c:1 c?0=9sc!93c106dddyc48+9fdqdH61dtbB9+dJ1N5+5$1W5O0q5Q1N0_5Sd(2@2:2e2g2=0Y1~dZd$5Z1T5-6x2(0-0U0M0Y0!8O0y0g1f1F1H1J1L0@c%681!3x1U0w0Y0@2z0J0P2(0@0(0O0_2B1K0@2(181Gd=ei6j1G2B9g0Y0P6meh0y2(0M1/290t0*0%0q0q5?0j0X0=0!1d0`1)0Y0j3=0J0qeTeV0q0S0)6{cP1 0U0}0U0Q0=0`0)0t0=0K0z0F0K0s0k0*eV2v0 0)cQ0_1a0U1~2rcE1V1G046`6|6~2#e?e^e`0af20.1Nff1N0Y040j1Wee046^0@3d0(cy1j132#5V0n0*2?0P2*0=1w0@e80@390P130B2 fJ6 208f2?202B0@0c0P0Bem0*000Y0t0t0`0V6~6~05eGeIeK0_eMeOeQ0)eSeUeWeYe!f6e%g40q0pdoe:0P0U6q0Y300@f5f7f9fb0nfd0;do6 eEgh2Wftfv0@0v9l1L9g2V8Mex2#6~2N2~0)0@0dfB1n1cgL2#2V0V0.0J1we95V1B0 8R0@0P1x390-0Oeme80VfIfRfH0H0_0#0*fwedd_e?14200Eg?0#0@gCfS0(g@de4r1n2Y0y1meq0o1f090W0n09c10T9m0V3=0*hm0t166ugLgNghfR0#0 f=0@6~fTfWeDfB8Q9g7Tha2lhd0`hf04hh0Zhk6lhGhKe,hM9phOhg0W090/5?0Y0E0?0n0^h,0{0g0^hT4V0R0=0i2Ngtcv0`0JgJgDe^8f6 00eoeq0ndFg%2~0@0e0@0;1se@0@0lei1;el0`0j2R0(elh82xhLhchZhPhh2s0gh?3ghmfP2(2?iqfW0@0Oe@1xgI11e@eE0%is23iuhNixh$h(63h+h;0?0gh:0^0Nh%h)6:0DiB3wg`1%1Y2/1X6u8Re^3xeh3:6}1^2d0(hf6 9p0Y0R0_0.f=1a6h0YcQ2v0/j50ReT0/2l1aeD9qjfjh0y0`j0jm1u6Z0@eH0`eJ01jccQ0*0q0k0j0*0B0Jjp0 0R8L0E0RgE9j1w1a2e29661{6h0Jhnf8010m0P9pemh0g@cscv0)0Ejb1mjDjFjHjJ2vjjjl010g0x0K1{0qfueF3Ki 282ej3jgjMj8jajBj?2Ej4jMj|0yjujokij6jrjt01jnjwjyjAjC1L0q0Fj_jKkojN1LjPjR2ZjUh69q0-jY0-j!3Nj$0z370,14h1j.0*j:j=jdkykAjIkCkk1aj k12/k4f`k6271_k9jLj6kd0`k!jekDk*ksjvk^0Rkq28kmkuf|kfk#jE0IkBl2jOjQ2WjS2s01jVkLkNkP0Vj$e?0okVj-2vkYj;l9j@lck(j{0=jkklj~k0k2fu1h0qi_eq2@1$3xd$0~101204.
Votre figure

Votre tracé sera ici