Aller au contenu

Étude d'une trace GPS

On souhaite étudier les données à partir d'une trace GPS.

Le fichier que l'on récupère ici est issue d'une course cylciste : la pyrénéenne 2023.

Le fichier se trouve sur la plateforme kaggle qui permet le stockage de données scientifiques et qui possède une API accessible via un module Python.

Récupération du fichier⚓︎

On éxécute le code suivant pour charger le fichier.

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

Formule de Haversine⚓︎

On cherche la distance d entre deux points \(P_1(\text{lat}_1, \text{lon}_1)\) et \(P_2(\text{lat}_2, \text{lon}_2)\).

Cette formule ne prend pas en compte les différences d'altitudes. C'est une distance, au niveau de la mer.

\(a = \sin^2\left(\frac{\Delta \varphi}{2}\right) + \cos(\varphi_1) \cdot \cos(\varphi_2) \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right)\)

\(c = 2 \cdot \arcsin(\sqrt{a})\)

\(d = R \cdot c\)

où :

  • \(\varphi_1, \varphi_2\) = latitudes en radians
  • \(\lambda_1, \lambda_2\) = longitudes en radians
  • \(\Delta \varphi = \varphi_2 - \varphi_1\)
  • \(\Delta \lambda = \lambda_2 - \lambda_1\)
  • \(R\) = rayon de la Terre (en km, généralement \(R = 6371\))

Exemple⚓︎

Si l’on a :

  • \(P_1 = (43.3°, -0.4°)\)
  • \(P_2 = (43.4°, -0.3°)\)

alors, en convertissant en radians et en appliquant la formule ci-dessus, on obtient \(d \approx 13.75 , \text{km}\).

Complète le code de la fonction distance:

###(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 : 5/5
.128013Cit3a;dv,FnDT2.SR5wb*cy+14q: f-up08)_9eklohrP=s6(/mKg7050h0N0d0f0c0P0V0D0w0P0f0V0V0U010d0c0H010406050V0G0Z0Z0f0S0x040q0Q0P0G0`0Q0l050Y111315170 0H04051n1g1q0Y1n0 0h0c0i0/0;0?0^0;0l0#0G0f0#0N0F0H0x0d0R1e0D0R0c0#0R0P1S0R0d0}050*0u0P0N1z0=0@011R1T1V1T0d1#1%1Z0d0S1o1N0/1a0V0H0f0l0^0o011)1B010E0,0N0l0f0Z0N1Z1~20251+281%2b2d0}0a0D0T0S0Q0H0Q0V0c1d0l0D0(1|0S0S0N0w2y1g2g0l1o0Y1N2L1^1`1_1!0h2i1C0c0l2a2v1Z1w1y0:1*2V2X0l0Q2#1Z0H2E1o2J2L2=101 2z2%262+0S140P1Z0f1Q2E0E0^030L0L0w2,0N1V2*0Q0F0I0F0z0}0D0z1g0f2?2_0~2^2h2{1+2}2 31330N350137393b3d2Y3g0F23040D0o3n3p203r2J2U013w0f301o320R3436383a0(3G2+3I0e3k0e3O2I3q0 3S3u0^3V3X053Z3#3C3%3F2W3H3h0A3k0A3:1h3=3s2`1A3v0Q2~3W3y3!3A3$3E3)423+3h0s3k0s482=3?2_3T3`4i3~3D3(3c4o3f3h0W3k0W4u4a3@4d3_4f3x3Y3z3B4C413e3I0$3k0$4L3Q4w3t4O3U4Q4h4S4j4U404n4X3h0J3k0J4$2K4(4c2(4+4g3{3}4k3 4m4E4?0F0M3k0M4{3R4x3^504R3|4T4l4D3*4G3i0I0}0z0I5d4}4y4,525k555m4F3I0z3j045E5u4b5w514A544V4=433i3K0z3N0Y3o3;4%5J5g4z4.4B4;575Q0z3-5G3/5V3P4|5Z4*5#5j4/5l4W5*455G475/5X5;4N4 5@534:565n5D4r5G4t60495Y632|5x5M675B580z4I5G4K6e4v5=646j5$5N5(693h0z4Z5G4#6s4M5f5?6w5^5%685C6B4^5G4`6G6g6I6v5L6x6l5{4p3i5a5G5c6T626V6i6X6L6y6N580o5q046?5I6h4e6.665`5P6#0o5F726`6,6|5i6~5A6!5o0o3K7d754)6W785z5O5)715,0o5.5W6f6+7h6-7j5_7a707c5}0o5 7r6t6{4P6}7k6z6O3J6b0o6d7E6H7u774-6/6Z7z3I0o6p7Z7g4~7v7U797l6A3J6D0o6F7Q6U7S7H7w6M6m5Q0o6Q7|7$5K7^6:7`716%0o6)7;2K1r2:1g2#2O0h1`2T5g4D2!1x1o2/0N2;3q611o4D8p2h0c0h0^382J5D3y8w8y6;5*242m0N8E835o5F3:7G010O0}0(0E8r6u260t3k8V8P0l0E8S0c0V0*0l0w0N8!760^0|040X8/7?3U0}0;0d3m7s8u7%1+8=0j8r0D8W3v8{1e0#8~2@8P9395973_8{0f0d5U9d8:019f8 968#991E9m8q9e0}0K0C8r0 8 5J8D018z2_7Y8C8x9H8F718H2c8J9N8L9K2L5W8P8Y3L0D9#8^910^0V0h0}020B0G0Q0d0g9-9/9;9?9:0g9C9%0D9G9I203,9L8K7ba20D8Ia47X3h5,8O9o9*3k9#0D0b0Q0Z0H1c2W0#2A8)8+8-9~2z0O0Z0D0u0)0t0N2a3M0D2u2W0d0V9|9E3S9 0L8A44a39Ta5aQa79Ra97m5o5}3O9D9n8v9Ma00l3I6b5jaN9U4q9Q2daX7,a-608Paf9!ah0T159R0d0N0SaKa%2zaNaP0F6pa.a)9O5o4IaVa?aSaaba1Za`ae9+a}9#0Fbsbtbub59x4xb89J3h6Dbca@7L4Zbh9S7K58bCbn8_a|ah9#8|0z0j0D0P9a0z0D0CbU9k2x0G2B202TbV1Eb$2B0Q0E0D280S8*aF0QaHbw3Q9Fbdb96QbDbjaY3I4^bHbE58c0bM9(01bObP8|0obTb+0#0obYb!0`0db%1(b)bU9ab-1(b/0D0V2F1e2TaG0l0db{89aMb~bA59aRbJ5Q5ac6c27,6%a#9}bza16B6@c1cM6#5sa=bIbe5DcYca3Tcdah0r0)0G0S1f8 a$bxa(8Eb95EcLc)6B3jcPc!8M8Nc,5gc.brbudbcF909~cIcW5Rc a:did3d0di9Wded8bpbP0D0mar20at2W0D0!0Zddb}c|cJ5+djaT3i3-dmdkdHdp9hccdsah9_9^9.9`dU9{c^cUdga+6Ba!32a/dJ0z45dMd,a!5/bPdQ0l0}0N151N0r0f1w0GaJ9rdQ0Q0}0U9g8P0Z0c0}0W0e0$9c4aaLbyd$6adIbk0z4rd/ema_3od?9t040we79oe404e6e2e8ea045td!ehc{9Nc}bbd*bddNbga8cQ7L6obm3oc_b|cHdFdh6Celc36BbGeRd45DbLesahdQ8R040c8UeC9o0l0u0}3W0P9}5g8=0X8@eIcbd^04bRf04*9q2=9se`9u9bfa4 fc3qfe8_f7cffi26fk3Qfmf6fg9weY9o8=0K9AdDeZeKdGc0eNc75*c5e+dn0zc9e/dtfu4y9j0d0k2sdCe_8_ezeBfdd@0}0Sd~0c20e1b63Tf2fq98f89keffy8_fAfDeie!d%6$e%7,0zcOfMdNcSd=fRfS5!9ufWakexf!e5ggfv04f*1wf-f=8;0}f4f/gcf8bWgp9p9zf}eJa*7YcYfIeS6=5qepe(3Jc+fQdtf(f@0d0n0Qgj3Tf#gUgugmf,0lf.c`cbf;f5fTgQfxcGfzgzeHf/cVg072g27Lg^gJ7,g^dpgagb5?9ugSgX4*gWfZgkgZgog*f1grgxfo9ag-dqfbg:6tg*g?7Y3KcZdn7dc%fJ71hq5/eXg.gBaOcJ7pg_6=dLg6dJhEg gagP0hb+h54 h7f%eub+h4h8gV0}0FhQ2|gdfXgAb7ej3h7ChF7{d.hIbkh-hLfRhN8|h#1+hSflgP8|hWhTeyhZh{9igQgefYhmg=h+7Mh.71eoh;gK7OeV3rhnic7Zie7ceQaWgG7{bbg9h^eu0fi501h}ftgP2wc@gthk8?hf8Sh`hX5gez0YiAe90}hidQf|hch60}0v0vgxiS6^iAez0yiAf73ag$f`g(heiX64fUi8gxiWi2gh04i#iNh2ev2vi`i=iHi@gQi1g%f:hlh~8Pezi i|gkiFj4iJi?h$04hO1ei)0}iQj04 i%iU9y040Kgxjfjgja5gjwh)dff 7YbCgFe,h,e*isjN7-ikh0gPewju26iC2Kh1jveEhij#jYiZi,e}jjjm92grgsjEj1izj/gqjzjri~jDiDe88%eF0p6dj6frjc5YimjJh,fHjIit71fLjQhsfPilibka3JcSjMhsg5khdk86jTe:8Pe=2Ecoc?j,04d`0Sd|f+e0j|j~j!jVdD0Y8t8a8o8c8l1g0d8fkU2R2M0f1$kR0Y8d9D0(0*0,0V04.

Création d'une liste⚓︎

On éxéxute le code suivant pour obtenir la trace de la course.

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

Lissage des altitudes.⚓︎

Les récepteurs GPS donnent parfois des altitudes non réelles sur certains points isolés. Pour contrer ce phénomène, on eut lisser sur plusieurs valeurs consécutives.

Le lissage d’une liste de longueur \(n\) des altitudes par moyenne glissante de pas \(p\) consiste à remplacer l’altitude au point numéroté \(i\) par la moyenne des altitudes des points numérotés \(i, i + 1,…, i + j\)\(j = min(p − 1, n − i − 1)\).

Complète le code de la fonction lissage.

Ensuite il est possible de regarder le résultat du lissage en constatant l'évolution de trackDf[0] entre avant et après l'appel de la fonction lissage.

###(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 : 5/5
.128013it3a;dv,nD2.SG5éwbcy+14qL: f-up08)_9eklohrOP=[s6(]/mg7050g0L0c0e0b0N0V0B0t0N0e0V0V0T010c0b0F010406050V0E0!0!0e0Q0u040n0O0N0E0`0O0j050Z111315170 0F04051n1g1q0Z1n0 0g0b0h0/0;0?0^0;0j0#0E0e0#0L0D0F0u0c0P1e0B0P0b0#0P0N1S0P0c0}050*0s0N0L1z0=0@011R1T1V1T0c1#1%1Z0c0Q1o1N0/1a0V0F0e0j0^0l011)1B010C0,0L0j0e0!0L1Z1~20251+281%2b2d0}0a0B0S0Q0O0F0O0V0b1d0j0B0(1|0Q0Q0L0t2y1g2g0j1o0Z1N2L1^1`1_1!0g2i1C0b0j2a2v1Z1w1y0:1*2V2X0j0O2#1Z0F2E1o2J2L2=101 2z2%262+0Q140N1Z0e1Q2E0C0^030J0J0t2,0L1V2*0O0D0w3g0}0B0w1g0e2?2_0~2^2h2{1+2}2 31330L350137393b3d2Y3g0D23040B0l3m3o203q2J2U013v0e301o320P3436383a0(3F2+3H0d3j0d3N2I3p0 3R3t0^3U3W053Y3!3B3$3E2W3G3h0x3j0x3/1h3;3r2`1A3u0O2~3V3x3Z3z3#3D3(413*3h0p3j0p472=3=2_3S3_4h3}3C3%3c4n3f3h0W3j0W4t493?4c3^4e3w3X3y3A4B403e3H0$3j0$4K3P4v3s4N3T4P4g4R4i4T3 4m4W3h0H3j0H4#2K4%4b2(4*4f3`3|4j3~4l4D4=0D0K3j0K4`3Q4w3@4 4Q3{4S4k4C3)4F3g0G0}0w0G5c4|4x4+515j545l4E3H0w0w5q3l0Z3n3:4$4a5v504z534U4;423g3J0w3M5H3O4{5L5f4y4-4A4:565S0w3,045,5t5!4)5$5i4.5k4V5+445.465X5J5Z4M4~5?524/555m5C4q5.4s5 485K622|5w5O665A570w4H5.4J6d2@1t2:1g2#2O0g1`2T5f4C2!1x1o2/0L2;3p601o4C6I2h0b0g0^382J5C3x6P6R675B3h5E0B2m0L6X6l5+1Z5 6g1+0M0}0(0C6K5;4~0r3j6@6.3^0C0}1V0?1H0L6|5e4)0|040X754(630}1^0e0t0M7b4}26780I0A6K0 6e2K5L6W016S2_3H3J5i7u5)683h236$2c6(7v6Y577z6-766_3j0B7R7j3S0V0g0}020y0E0O0c0f7Y7!7$7(7#0f7p7T7B0J6T3h5-7A6Q7J6*4o0D3,7G2d6)5`7|7@7N7c267V7Q7R0z0L0.2E1%0h0q0.0(0.3V0`0c0E8j0B0V1e0c0B1 0Q0C0O0b0.0b0!2/0q0t8z8c0B0e0h2F0B1%0B0Q8E0L0F0c0L0E0Q0B0o0S0n0i8u0O8V8M8B2x0L8W1%0.0C1b8n0e2y0.2A02030d0K0f8E0P200`0N0N1e730i7.7r6N2z7:7=0D5|7^815R7|447 7I7C6Z9e6,5I6}01883K7R0B0R2z2E8C0;0t1(0N8`8|0f8l2x8o1(8e0L8g8u158M320!0O0u2a2X2A8H0p8$2W0c0.111x910V0m982@3R9c7x4p6V7_9n574q9l9h5*7|6a3/9s9u9w2q8%8-8H2u9%0.2a0B282z2B718T8#7Z202T0,6$9M8c8T8u1b0.9#aa0j9(8#1P710V1(11a80.ax9(8Oar9,9/6J9;9_7;9?0D6o9g7`825n4H9}aW9iaY9q3q997taQ9d4Y4R7:7{5n4Ya!9`5Sa.a27O877W9v8a9E8z0V730Barb50C0C2F8n0q8I8K0t0B0E2z3zb98t2B0s4e0g8#0;8)0Vasb61w2E2G0L2day0B9U1w280q0L8#b30j8d0)8V1f997q9:4w9=203H4@a/aQa;bV246%9~7D0DbWa{861+a49w7+7*7Z7,b:7-bP7/a,aS59bXb%9o59a@7K5Sb}3NbQaObSb{bU6!5pb~a#9 5n5rb#7Hb 6mcd3Na56^2|0}0j0s0JaI0V6K0Bcq1+0O0}0TcycA3^0s702a7T5f787aa*9s0j7e0Q7g7icPa|1+7maN3Pa+6X9d5D9^cl5+6#b$cfb(c)2L3ncp9s6:048x0QcFcQ0}0bc}cX0^0O6`042Wd1b,cH0}cT1E74cWd901cNcL5=cscucwdj4~7m7ob_df9bca0j5C7z32a:aXdxcj80c/9o5Va(a5c@d23T0}9J8n8j7;0E9+ay8cd87kcBcDdW3S780Udocr043abod(cY0}d%dt3S0!0b0}5~bRdg780Yd!5fc_c{d~dkd*0Od,99cz9sd4c bO2=e8dLcR047f7hd-0^d$ekdMd6en78drd`dX3^c encC040vend?0}6cetd#0}0Yd}dseFbTdw6!7@dzbYdBeOdD9mc37|5,dIdJ7Sc~048l0J9U0ue24~eycEe7cG3TcI041ieq0}cOeF5#dN0N8m9L0VdRdT8Tcxd;cM0}0Iex0}0ZenctcJecc8d{e`fee~f0dQ9*0h91dVf777f9c!7saPc%aS0w9feQc+eX9kc.a^fFeZe!e;egeicVe|fu04d:fQ7depftdpeHfTfieu01eC04d_f#eG04eJede;e.e,d)e(e*fw9a0BeM69c*dF6m9|fHeWcha15Xc7c#fy7Jc(aUfDf 5+aZg2bZ6!aU85f$egaC73e_79flehcT7h0k6?fX7lfveK6J0Z6M1r6u0Z6w1g0c6ygJ2R2M0e1$6H6v6E7q0(0*0,0V04.

Statistiques par segment⚓︎

On souhaite établir des statistiques par segment kilométrique.

Complète le code de la fonction suivante qui retourne un couple (altitude minimale, altitude maximale pour un segment kilométrique dont l'indice est donné en paramètre.

###(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 : 5/5
.128013Ait3a;dv,nD2SR5éwbcy14q: f-up08)_9eklNohxrOPè=[s6(]/mg7050h0J0d0f0c0L0W0z0t0L0f0W0W0U010d0c0D010406050W0C0#0#0f0Q0u040n0N0L0C0{0N0k050!12141618100D04051o1h1r0!1o100h0c0i0:0=0@0_0=0k0$0C0f0$0J0B0D0u0d0O1f0z0O0c0$0O0L1T0O0d0~050+0s0L0J1A0?0^011S1U1W1U0d1$1(1!0d0Q1p1O0:1b0W0D0f0k0_0m011*1C010A0-0J0k0f0#0J1!1 21261,291(2c2e0~0a0z0S0Q0N0D0N0W0c1e0k0z0)1}0Q0Q0J0t2z1h2h0k1p0!1O2M1_1{1`1#0h2j1D0c0k2b2w1!1x1z0;1+2W2Y0k0N2$1!0D2F1p2K2M2?11202A2(272,0Q150L1!0f1R2F0A0_030H0H0t2-0J1W2+0N0B0m0B0v0~0z0v1h0f2@2`0 2_2i2|1,2~3032340J3601383a3c3e2Z3h3h3l0m3o3q213s2K2V013x0f311p330O3537393b0)3H2,3J0e3l0e3N2J3r103R3v0_3U3W053Y3!3D3$3G2X3I3i0w3l0w3/1i3;3t2{1B3w0N2 3V3z3Z3B3#3F3(413*3i0p3l0p472?3=2`3S3_4h3}3E3%3d4n3g3i0X3l0X4t493?4c3^4e3y3X3A3C4B403f3J0%3l0%4K3P4v3u4N3T4P4g4R4i4T3 4m4W3i0F3l0F4#2L4%4b2)4*4f3`3|4j3~4l4D4=0B0I3l0I4`3Q4w3@4 4Q3{4S4k4C3)4F3j0E0~0v0E5c4|4x4+515j545l4E3J0v3k045D5t4a5v504z534U4;423j245F3M0!3p3:4$5I5f4y4-4A4:565P0v3,5F3.5U3O4{5Y4)5!5i4.5k4V5)445F465.5W5:4M4~5?524/555m5C4q5F4s5 485X622}5w5L665A570v4H5F4J6d4u5;636i5#5M5%683i0v4Y5F4!6r4L5e5=6v5@5$675B6A4@5F4_6F6f6H6u5K6w6k5`4o3j595F5b6S616U6h6W6K6x6M570m5p046=5H6g4d6-655_5O6!0m5E715c1s2;1h2$2P0h1{2U5f4C2#1y1p2:0J2=3r601p4C7k2i0c0h0_392K5C3z7r7t6:5)252n0J7z6l7B2M5V6`0_0K0~0)0A7m6t270r3l7Q7K3T0A0~0#2X150P0H0W0J0$2e0k0d7V6+1,0}040Y7/4(630~7)7+2b7.6e2L7R7;0~0y7m0z823^0s0~2X7 2^7W7=0G8688010N0~0B020$0d0g8i7W0k8a040d0C0D1(7^4}277=85803s8G5I7y017u2`3J5R5i8K6y6N3K0z7D7F6Z5n8P5 7W7T040z8)878I7W0W0h0~020x0C0N8q8;8?8^8=8@8r8G108,4w8R7(8N3i5+8Q7s8L7A6!3,8V2d7E9a7G9c1!8#7:0_8.3l8*0o0*0N0C0Q2Y0z1(0/3V0{8x0)0/7!2A0*0z7$2B0C0z7|7,0d2B0J150k0h0q7m908e92998M213J5|988X6 5n449e2e9*5(6!9(5.9X7l3R937v4p7x9!9b5n4q9.9g8S576a3/8-8/8(8*0S162d0T1_0J0W9W8B0z9{950B6o9)9h8Y3J4Ha39:6zap9k7J9m019oab8)0BaHaIaJak917q9 9|0B6Cara55P4Yawas9+4XaA7p8C1,aE8*9M7*9O0z0yam7-aL9YaN7zaP6PaSa03J4@aWaT6!a_9l7_27a(a)8*0M130q2t9Ka*7}7-2B1f9P1Q0i0J1d9xai9M0+0{0W0{8=aia;9_9Za@ao6$a`9i5n59a~a{3ibB9@alan9$6A6?bCatbO7C9fax8T5ra!8jb58)9r0d9t0Qbw3P8JaOao5D9~bV6m3kbGbD5C5Ea8aCb!0zaJb 0Bb*819`b-bN5Qb:aX9;5n0v24b@bRc77Ia#3Sb}0Y9A0H9F0j0zcm7$0Ga-0z8x8z0J0Y0A0L0N0f0dcpcAcC0d8h8 bLc50k5C973393b^6A9d8Wc9ay5*bYa99pb60z0b0L9B0C2C9F0c301)9H7$c.3V1)0h9L9N7~c2cibMcN6A9(cQ9 cS3j9-cVa cb9?aBb3a%aaa)8_8}dh8{8`8~6saM2Ac 69c8d9drceaY6Aa75.a)8j0t5E030z0R2A2lah9x331Wbs1)1_0f0t0K0l0A9M9ubnbda,0i9t1cc}b,bzc66ndsbH3javd8d-d+chdA8t7{a+7~0H2v8caj8G877W8l040U8saC7=0Val5Z0~d}a:e08j7M040A4ee6dd3^ec0N8cela$0_0N8%2Xer4x0~dPdRdTex5feh0c7Pefd^04ed8dbxem01e8ea4)7!0~5sdo3S7=0ZeD4)e30Ue5eIaC0kd_beeMb+8f0~eZcKeWdq6AaRd3b;5)aVd:d56Ba!d@aCeFeH2?e1aCeu0~2,e.2Lf8eOe+04c{7-d|ep7-d a=eseP84d%c4d)d03ja_e{cWbWa}e cf0vb13pc$8)eg0~2F8x9ve!4~0K0t0~0M1f0JeR4~7=0jfP27fRfTfV86fffqdC0~dE0b0C0t0C2AeL2B210/0t1)fjfd8HfpamcM5CbBfzdt6AbFfDdw6#a!9^e/by9aaP6=d,d5gjdvca8ObPdz8*8jfh9A2yc+bve)eOe$f#8304e9eWebeKfX8D0~gFg15feT045~gN4)eYgC7L0~ejb)gzfqfh0DgV8kev1gg!eyfid`fkeLfoeNfqgUe?g1e^3hb`g6d-71bT9/fA6;b`grfJ7WehfM9ug+f7gt8v9FgJgD7@gG5=0~gv9CgygSfY0~0Gf!g,5Zhf0f0Phh0_7=hjhq2}hmc)gw9DhAfr04cJdn2^0!7o757j777g1h0d7ahW2S2N0f1%hT0!78900)0+0-0W04.

Pente d'un segment⚓︎

On va caluler la pente moyenne de chaque segment. La différence d'altitude est obtenue par la différence entre les altitudes minimales et maximales, puis on divise par la longueur parcourue.

###(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 : 5/5
.128013.8594ita;nD2R*714 f08el%orO=[]/mC3dvz.S5éwbcyq:-up)_9NhPès6(gk050F0s0d0e0c0t0$0o0O0t0e0$0$0y010d0c0U010406050$0T0C0C0e0w0P040J0v0t0T0~0v0g050B1517191b130U04051r1k1u0B1r130F0c0G0?0^0`0|0^0g0)0T0e0)0s0S0U0P0d0Z1i0o0Z0c0)0Z0t1W0Z0d11050.0N0t0s1D0_0{011V1X1Z1X0d1)1+1%0d0w1s1R0?1e0$0U0e0g0|0i011-1F010p0:0s0g0e0C0s1%2224291/2c1+2f2h110a0o0!0w0v0U0v0$0c1h0g0o0,200w0w0s0O2C1k2k0g1s0B1R2P1|1~1}1(0F2m1G0c0g2e2z1%1A1C0@1.2Z2#0g0v2)1%0U2I1s2N2P2_14232D2+2a2/0w180t1%0e1U2I0p0|030W0W0O2:0s1Z2.0v0S0E0S0m110o0m1k0e2`2}122|2l2 1/313335370s39013b3d3f3h2$3k0S27040o0i3r3t243v2N2Y013A0e341s360Z383a3c3e0,3K2/3M0E3o0E3S2M3u133W3y0|3Z3#053%3)3G3+3J2!3L3l0n3o0n3@1l3_3w2~1E3z0v323!3C3(3E3*3I3-463/3l0K3o0K4c2_3`2}3X3~4m423H3,3g4s3j3l0%3o0%4y4e3{4h3}4j3B3$3D3F4G453i3M0l3o0l4P3U4A3x4S3Y4U4l4W4n4Y444r4#3l0r3o0r4*2O4,4g2,4/4k3 414o434q4I4`0S0X3o0X4 3V4B3|544V404X4p4H3.4K3m0q110m0q5h514C4:565o595q4J3M0m3n045I5y4f5A554E584Z4_473m3O0m3R0B3s3^4+5N5k4D4=4F4^5b5U0m3;5K3?5Z3T505%4.5)5n4?5p4!5.495K4b5?5#5^4R535{574@5a5r5H4v5K4x644d5$67305B5Q6b5F5c0m4M5K4O6i4z5_686n5*5R5,6d3l0m4%5K4)6w4Q5j5`6A5|5+6c5G6F4|5K4~6K6k6M6z5P6B6p5 4t3m5e5K5g6X666Z6m6#6P6C6R5c0i5u046`5M6l4i6=6a5~5T6)0i5J766~6:705m725E6(5s0i3O7h794-6!7c5D5S5-755:0i5=5!6j6/7l6;7n5}7e747g610i637v6x6 4T717o6D6S3N6f0i6h7I6L7y7b4;6?6%7D3M0i6t7%7k527z7Y7d7p6E3N6H0i6J7U6Y7W7L7A6Q6q5U0i6U807*5O7|6@7~756+0i6-7^7x7+7X5C7B7/7P0E6{8k835(6O7.7O5c0E5J8t8n6N7M8h8r5U0E3O8C8w7m7-7N6^8B5:0E7u5@5i7`5l8H8z8J6)0E618W8F7,8g7}7f3:6f0E7T8O5z8o8y8$7#3l0E6t8?5h1v2@1k2)2S0F1~2X5k4H2(1B1s2?0s2^3u651s4H992l0c0F0|3c2N5H3C9g9i8U5s3n0o2q0s9o879q1%647K010*110,0p9b6y2a0M3o9G9A0g0p110U2e0d0s0W0$0s0)2h0g0d9L7a0|10040(9#8Q0g119V9X9R9+8e9%110R9b0o9H3z0N112!9!7w9e9?019(0V9_a213a25N9n019j2}7$9m9hae9pah9s2g9uak9wah2P5!9A9J3P0oay9=3X0$0F11020Q0T0v0d0faFaHaJaLaI0f9baa2{3Wadaf243:ai9v8%8=289ta!8;3k9yau9$01aC3oay0o0D3!0O0T1+0o0^0o9Q9Z1,0C0v0P2e2#2E0T0o9/9Y0d0o2e0o0uaRaAaV9Uag48aZaqa#0S49an2ha)7q5s613SaS9aaUajaW0g3M6f5nbjar4ua%aobu7:bG9za.a:axay0!192g0#1|0s0$bhabbB9o9k4Lbn8A6)4Mbsapb-5s6t3@9AbSa=0o0Sb}b~b b$aT4Bbjb*0S6HbHbCal3l4%b:bN7Pc7bQ8Qb`a=ba9R0o0R0oa0c1bAc3c9c56Uc8ce5c4|cdboa*cwcha4cjb{ay0Y160L2wb7b99Wbb2E1ibc1T0G0s1ga|36a 9S0ob2b40g2#cr3Uaccubl5db,cac;cBb=3M6+bybic/aX6F6{cxcCbv5H5uc^c?5wa,a3aBaDbT0o0j0-0v0T0wc,2Oc.b)c:5Ic=bJ3m9ra(d37:dqatdb5kcHb|b dEdldbc4dp3Od2c_6F27d7ds5Xda9|0|dCc#9Tc(cn0o0p0t0v0ea16xb%ctdoc 3m5:dLd83;dPbp5/dSb_ddcIa=0!9Rb1b3b51,0Fb8cl9Zbd2D2ydj0O9R1L0sdGdnakc50mbx36bId^brdvdM3mbxcFdca;ayaOaNaGaPezaQa9c}d-bE6FbGenc9dQ4vd@a*0mbP3sb{dT010O5J030o0x2D0w0La_0U0#2Ia|b!a~0va00=e5cP9:9Zehb(ejdpb@eLcy5.b/erd8b@5?eU9M9.cQ9R0W2ye;9`eV0v110yff9A9(0zaA5(9Pe:e_a29{9A9C040p4jfka.9-04fdfs2_fua.0vaw2!fA9,111|0e0O0*0h9FfteVfw0cfUfGeVfCfEd)cs8Qfmfo4.0C0c115xd+f*110AfMa4fh040yfjfVf804e7f(c-flf@e`d,e|d.6Gdrd^ccf3dQcgeTa=fW9 fZ3ufH9,9~042pf,539(9*f=a4fCg2fcfr0db#gx3Xa6f_3Xf{020taJgI5kf.115Yc2f?04a8d*gT2DdIgacwe dw7P0mcAgfd^cEgid}gk042I0ddj1jf a.0C9O040q0If;gXf)gZc~eI6*gceQ5eePd46Fc{5?bzg4g8bD7$d1g%es6`bLbtg(6_d1f6gjg03!0d9U0.0wg32Ogof`figO5`f9e^hyf%gEgYgG11fngFgPf/g~gt2a9(0AhRhOhT1163h#4.hYg79fh57$5Jd;ds76hpb;c?h?dzf7fB11hx0W2e0FhH53f{f~f!g0gAhMhW1/f+hS4.f{0Sib0|gQ5Kiia5f@h!h33Xikh(iq5kh+eFgFg!h67hh8hc3NdOg,a*iBdzhgdme{hj3l7tiC7:iPhbiRd:huazg01A0$hyi!19hC3PfghGg`fNg1fa9ZgBfeieguhQimikh1iuh*ioi_hU3qi?hXg6ixhOiz7$emcpeMbp7Gh@f075eug/hE4C9D0ci!i00gi2i,hFf|i330hJbbi;9ZhNi|i@04iphh8Qigi 5vimhYjEiLg{j0jKj4h2jFh4eH7$eKjajf7geOiGiD7SdaiKdHh.iOe~jYhr7 f2bMj:75f5jieVeX11eZ0hfY0pcM2eed2Ee4jm0.0gk41S0w0c0HcT3!1,0(be0*0C0o0bc%0Vh,jUg9iAc7hmh_gej?hnghdef#jljn0Cju1/i5kG9@9)imfCiZhyi1kJ01jHjrjk04kOhzi%jQ04kpkU5kf{0kkRik5w0qi{5$iyj,3Ng$j/hng+kyh_g.kBfvglkRkNk70WkFk%iffii6gneVi`k!gW4ek;jViOc{kvh=haj$iRhejih|8Qfwg?g^k+g}g k/5^lgks3:hlk^c?8kjej@5slHiJeGlC8=h:lkbp8tlIeslTh{hva.j|04j~0L0g1B3g0L0oki2D0Ck$jSjNh-lh3kdKlRa*8ClUlGdKiWjjfpkW3g0.0W0ZkRkIl668h~gMjojqi7fI11ihmajv04h i$hBkqlFc58MiQ8jd?lnmvj)lNiN3kj9eol{eqk{ds8Wdalra4l!eZd b0e9e/ecee1Mmqj78=jXmEiD8*l}mIeSk~h}fDe0l4b3m8i+mggUgwh)mbm3gM0em6m:040Bl1kDhyl5m^j3k#m~k*mk1/k,k.mWk=8?mu8sj=hqlVj_m*ls11lu0wg_m=gy9Pm-c(eh0B9d8`988|951k0d8 nF2V2Q0e1*nC0B8}aa0,0.0:0$04.

Les statistiques des segments⚓︎

Enfin on veut obtnir des statistiques pour les 103 segments de cette course.

Plus exactement, on souhaite connaître les parts des segment ayant une valeur absolue de pente, inférieure à 2%, comprise entre 2% et 8% et supérieure à 8%.

Complète le code suivant.

###(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 : 5/5
.128013it3a;dv,nD2.SR5éwbcy+14qL: f-up08)_9ekl%ohrPè=[s6(]/mg7050g0L0c0e0b0N0W0B0t0N0e0W0W0U010c0b0F010406050W0E0#0#0e0R0u040n0P0N0E0{0P0j050!12141618100F04051o1h1r0!1o100g0b0h0:0=0@0_0=0j0$0E0e0$0L0D0F0u0c0Q1f0B0Q0b0$0Q0N1T0Q0c0~050+0s0N0L1A0?0^011S1U1W1U0c1$1(1!0c0R1p1O0:1b0W0F0e0j0_0l011*1C010C0-0L0j0e0#0L1!1 21261,291(2c2e0~0a0B0S0R0P0F0P0W0b1e0j0B0)1}0R0R0L0t2z1h2h0j1p0!1O2M1_1{1`1#0g2j1D0b0j2b2w1!1x1z0;1+2W2Y0j0P2$1!0F2F1p2K2M2?11202A2(272,0R150N1!0e1R2F0C0_030J0J0t2-0L1W2+0P0D0x0D0w0~0B0w1h0e2@2`0 2_2i2|1,2~3032340L3601383a3c3e2Z3h0D24040B0l3o3q213s2K2V013x0e311p330Q3537393b0)3H2,3J0d3l0d3P2J3r103T3v0_3W3Y053!3$3D3(3G2X3I3i0x3l0x3;1i3?3t2{1B3w0P2 3X3z3#3B3%3F3*433,3i0p3l0p492?3@2`3U3{4j3 3E3)3d4p3g3i0X3l0X4v4b3^4e3`4g3y3Z3A3C4D423f3J0%3l0%4M3R4x3u4P3V4R4i4T4k4V414o4Y3i0H3l0H4%2L4)4d2)4,4h3|3~4l404n4F4@0D0K3l0K4|3S4y3_514S3}4U4m4E3+4H3j0G0~0w0G5e4~4z4-535l565n4G3J0w3k045F5v4c5x524B554W4?443j3L0w3O0!3p3=4(5K5h4A4/4C4=585R0w3.5H3:5W3Q4}5!4+5$5k4:5m4X5+465H485:5Y5=4O505^544;575o5E4s5H4u614a5Z642}5y5N685C590w4J5H4L6f4w5?656k5%5O5)6a3i0w4!5H4$6t4N5g5@6x5_5(695D6C4_5H4{6H6h6J6w5M6y6m5|4q3j5b5H5d6U636W6j6Y6M6z6O590l5r046@5J6i4f6/675{5Q6$0l5G736{6-6}5j6 5B6#5p0l3L7e764*6X795A5P5*725-0l5/5X6g6,7i6.7k5`7b717d5~0l607s6u6|4Q6~7l6A6P3K6c0l6e7F6I7v784.6:6!7A3J0l6q7!7h4 7w7V7a7m6B3K6E0l6G7R6V7T7I7x6N6n5R0l6R7}5e1s2;1h2$2P0g1{2U5h4E2#1y1p2:0L2=3r621p4E8g2i0b0g0_392K5E3z8n8p6=5+252n0L8v7{6$5G3;7H3V0~0F2b0c0L0W8i0B6v270P0~0U8O8Q1,0}040V8V8G0j8I8K0L0J0W0L0$2e0j0c8i8W0_8Y0Y8=8$0~0b8`778@0~0I8#8 010M0~0C4g937@8H048}7t3M8?010P0r8|1g9f8P8$0s0~0R211J8~9b8^9v7(3w0~1_0e0t0M0k0C9y3U8Y8!9f9h8S040D9I5h0#0b5s9R4+8Y0Z9L2^8G9T0~5u9M8G9Y9a9z0_9O0v9-3U9%5H9W508Y929n9h9,9f109*4y8u018q2`7Z8t8oa58w728y2d8Aab8C7d1!5:a19#a3aaa6213-a98B7cas0B8zau7Y3i5-8F9496040)9Ha29b9k9gaJ9.3V0C0~0W0+0c8+8-8/8;aN9J0~8_aZ5#8(8:8M9_278Y0A9=5#9q041WaSa,8X91a/a09Ia4aq0j3J5~5ka ac5p46axafaz7nb7ak5X8GaL0Bbi8Pa%4+0W0g0~020y0E0P0c0fbqbsbubwbt0f8iam8h3Tb58r4ratahavbIb92ebb7-6caD9bbn3lbj0o0*0P0E0R2Y0B0=0B0R0q200R0{2z2B8M0B8Ja*0/a|6uaZbGa74IbJ7L594JbNagc05R6qbSaObU3Mbjbi0D0B020Nbu3N0ObCa~ap8+b}0D6Eb4cnai4ZaebObKaAcqbe8lc9bocbccce8K2Fcj0B0*0B0Hcka}b{cnbH0D6RcsbP7M4_c3cX59cV618Gcacccdcf0$cicOclcR8vcT6(cWcybc3J5bc!c`7-c^alcmc?cp5tb b65E5rc~c58D6^c83Uc*bj0S162d0T1_a+cQan8mcSd58E33b5cu6C3kdbd8dycB9hdhcd0DdHdIdIc;dq2Ab|ar6C3Lc_dc5p5Ucwc4dB5SdDc)cEccb?8Lb^b%0ba^dpbEaod4dP3jaCdvctbLd?dWc#5+aCc(94dFc+0zd,8Lb:0/d(b;0#0P0u2b2Y0/0)0/8,8.8K8Nd.3R5KdOb16Cb3d^d}8Db8ayc 7M0wb3d2c=abcT0wbReuez6o4sdAdx3jbRe0bTd$bWbYb!dLd/drd;er3jc7eJdT5Ec2eye)6Cc7eRcDbVdGdJdJeXeobFdsd=6Dd7eOe~eNd`e~2Mbfe1eTbi0Yb,aU0C0,1%0L0ib=16aUebed0j2Yfhfb0J98b-0L0I0B0A0B0c0E0F1(0Y0C0N0P0e0cfhfEfGfI0BfKfH9|b`dM0Beq5EcVe(dY0wcZe,fYc%f6eSe=c+2s2u4gb/2C0t0Q0ebr1)0tfH0q0$4g0b1)0YcI1)0GcL0c3mfQ4beEb05Ec^fXf0c}f#ged!f7f*bzbybrbAglbBen2Lepe|e#6@e d`gwf2czgwf5cF9oaE8|aI2?gF9b9j0~2,aYgJ9h8%04e9emfS5ha.e_gse{e!7ZdufTd_gBdzgggy8E5:c+bj9haF2Ffzb#a:9Xa#a_0_0#aQ040G0m9)gWg|040ig{50h09(h4g~018Yh99}9$h1h3h5eYaO9{gZcCg)g$3i7egxgB24gAc{hvdReDfSfUhvd@hteK7|3.hA7-7qcBccgR9Bbt3Xha8R8ThW3wa=2mhf9xbl65a)d)h%91hrgthu3KethJe-h=d|hK72eC3phR8{04fd0bffhZ9/hYhj940jh#2bh-040Y9!ho4z8Ii5959799i89bgS0FikgM9d9mgQi0gUikaF0bgI3rgKaOia0~0e0sgVihgXg}h)2}ijiOa`04g73RiE3U9Ocgbuik9@5Vh69`0~0ZiU5=g9cod=7PhxhB7Nh`h^i;gDh i90~flee0Lisi7iwi9ibiviLh7ifhfiqizim0RikjcioaOit2Xjgh+doj49biAiCiV9hi$j204iZ0f8Uji4za=iIiKe`94h(i(iPgTidi,9g8GiYchjzi#9U046TjJiSi+h/g#eFcp7!i=hOe+bah{7de/h~g=i0fs8LjwjAjpiFj6idjaiR3`iQj`3UaFfsjmjLjB5hjkj7jtix8)jF2LiW5hjrjgjDiJj}jbk1j8i)iTjw02c.gqk29SjUjWkqa-i*jNbDjGeZj$i:crgdgy4!hN7M7:cBkFg!d:kIgvfWh@dY7}i^kZf%gEg?9r0*b!kbkg9~iNjXk0i1fe1(jw0!k60chU0Nidhikx5@i~ecj0k_k{k}k k6j?j1k84+9Ok`ldh*04k|0+k~j hgh.gr2M8k818f838c1h0c86lx2S2NiI1(2M84a10)0+0-0W04.

Questions supplémentaire⚓︎

Pour chacune des questions suivantes, il est possible de trouver les coordonnées des réponses trouvées et de chercher le lieu sur OpenStreetMap.

  • Quelle est l'altitude maximale lissée atteinte sur cette course ? Quel est le nom du col de cet endroit ?
  • Quel kilomètre de segment contient la pente la plus forte en montée ? Même question pour la descente la plus forte.
  • Quel kilomètre de segment est le plus plat ?
###(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

Tracé de la course cycliste⚓︎

En utilisant le module matplotlib.pyplot et les donnés suivantes issues des questions précédentes, tracer un histogramme des altitudes de la course en fonction du kilomètre, la barre est rouge si la valeur absolue de la pente est supérieure à 8%, jaune si elle est comprise entre 2 et 8% verte sinon.

Python
1
2
3
km = [ i for i in range(103)]
pentes = [-2.2, -1.44, 2.46, -2.53, -2.89, -1.8, -0.28, 3.13, 7.4, -2.25, -3.37, -8.22, -1.75, 0.14, 0.78, 0.35, 0.11, 0.21, 0.08, -0.77, -0.09, 0.08, -1.4, 0.29, 5.91, 0.77, -4.18, -0.39, -0.86, 1.51, 0.89, 0.94, 0.84, 0.29, 0.88, -2.86, 0.33, 0.68, 2.5, 3.45, 2.98, -0.63, 5.41, -1.22, 5.51, -3.28, 6.01, 1.82, 2.13, 2.89, -2.58, 3.79, 6.58, 8.64, 6.76, 6.91, 7.52, 7.5, 6.5, 11.54, 8.66, 8.17, -2.01, 9.29, 7.31, 9.4, 6.62, 6.21, 4.77, 9.8,11.1, -11.86, -7.88, -9.22, -7.01, -8.21, -8.93, -8.06, -9.91, -4.59, -15.74, -8.73, -6.91, -6.07, -3.7, -1.19, -1.79, -1.97, -4.08, -3.05, -5.48, -2.33, -2.48, -4.0, -1.66, -2.52, -1.68, -3.09, -1.55, -1.59, -0.9, -1.28, 0.59]
altitudes = [544, 522, 530, 529, 502, 473, 459, 481, 539, 544, 532, 488, 407, 394, 402, 432, 411, 410, 411, 413, 411, 410, 404, 394, 448, 457, 457, 418, 415,421, 427, 437, 446, 459, 460, 461, 440, 444, 481, 498, 561, 535, 570, 626, 606, 646, 646, 658, 671, 718, 694, 712, 776, 861, 930, 992, 1065, 1134, 1213, 1319, 1404, 1488, 1489, 1560, 1634, 1729, 1795, 1872, 1939, 2010, 2114, 2108, 1994, 1910, 1820, 1750, 1667, 1581, 1499, 1401, 1354, 1198, 1109, 1045, 987, 949, 948, 921, 901, 860, 827, 771, 747, 722, 681, 668, 644, 629, 599, 583, 570, 558, 546]