Le plus proche

Nous souhaitons programmer une fonction qui, étant donnée une liste de points du plan, donne celui qui est le plus proche d'un point de départ.

Chaque point est donné sous la forme d'un tuple de deux entiers. La liste des points à traiter est donc un tableau de tuples.

La distance utilisée est la distance euclidienne. La distance euclidienne entre deux points du plan de coordonnées \((x_A;\,y_A)\) et \((x_B;\,y_B)\) est donnée par la formule :

\[d_{AB}=\sqrt{\left(x_B-x_A\right)^2+\left(y_B-y_A\right)^2}\]
Décompactage

Si la variable point référence notre couple de coordonnées, alors le décompactage ("unpacking" en anglais) permet de donner un nom simple aux composantes point[0] et point[1] :

🐍 Script Python
x, y = point

Compléter les fonctions distance et plus_proche.

La fonction distance prend en paramètres deux tuples représentant deux points et renvoie leur distance.

La fonction plus_proche prend en paramètres une liste non vide de tuples représentant des points ainsi qu'un point de départ et renvoie le tuple correspondant au point le plus proche de celui de départ.

Exemples
>>> distance((0, 3), (4, 0))
5.0
>>> plus_proche([(7, 9), (2, 5), (5, 2)], (0, 0))
(2, 5)
>>> plus_proche([(7, 9), (2, 5), (5, 2)], (7, 9))
(7, 9)

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

.128013n1.P8S*Up(àevDkdNA3+:ats2,Roblu=h 54é07_9[6x]yfm-)cBirw;/qg050q0m0x0w0#0E0y0I0Z0E0w0y0y0G010x0#0j010406050y0F0W0W0w0$0U040g0C0E0F0 0C0b0I020w0W0j0(0I0B0m190$0*0F0m0y050)16181a1c140j041A1H051K0)1K1M1H140q0#0n0@0_0{0}0H0#0+0H0E1!0H0x12050/0D0E0m1V0`0|011Z1#1%1#0x1-1/1+0x0D0C0q1c1,0$1I0x0H0@1f0y0j0w0b0}0z011;1X010V0;0m0b1n0m1+2c2e2j1?2m1/2p0W2r040a0I0e0$0C0j0C0y0#1i1k0-2a0$0$0m0Z2M1A2t0b1I0)282Y0x2625270q2v0}1%0b2o2J1+1S1U0^1=2,0#2.0b221T1+0j2R1I2W2Y33152d1k2@2k2|0$190E120I0c2V3713362u391?3b3d3f0z3i2e3k2W2+013p0w3e040I0t3t2X143w3n0}3z3B0I0K3F3v373x3L3f0J3P3H3R3J3y0C3c3A3f0R3W3l381W3o3#3q3C0N3*3I3-3K3/3%3C0f3?3Y3^3!3$3M0P3~3m403T040c0M453,2^413:0c3h1B3j3X464e480c3s4j3u4l4d3a3`3B0c3E4r3G3+3S4w120c3O4A3Q4m4v424F3V4I4t4D4M493)4P4C3Z4o3=4V3@4n4E493}4!3 4$4S0c444I1J311A2=2#0q2)3x0Z222B0,1T1I300m323j3P054|0-544K1?0p0b120V2G0W564#2k0%3f5j4+3a5e0419285o5b0}5m3C5v4u5c5r0#1o3#0x3P0I4W47120y0*0$5H4P064Q3Z0p120-0V5A3x5y5J4:5k3o0V5W0#0y0/0b0Z0m5Z3Z11040k5=5L042I2`0x0O0s5`4e5@0A5I5K4n125}0b5 0!622k5@0Y0v3W0I6k5J5(3K120S606e1?64666n3y120U6r4I6m5p1?0C120G6v6D6o5|0C5~6A33066l6C5w6x046q6d5%6J016u6B673a6y0O6X336S5B0}6F046H6$6w5r6a6c6j6l6%5c122R0x0F0$0b6I6T5r5N5P6s0}5@0k5_6Y766p6*756.016:0X7j3S7h617f7k6g7o3Z6:0h0h7v400W0#124q6,6}6/120u7A63127e356@6)6+3j6-3x7m7L6(046z7r7P6Z7u6?6Z7x7z7)6T7C7E7a6!120Y3W5S7H015V045X7;5#7;0b5*5|1g0y0O300C0Z0H5;7s3x7c81696M6b1z8d5?12657-7k5r0-2d798l406g6i4P6R7`6^8i5 888a8c7G6w6:6=8I6Z8C5~8k7$6T5@0Q7;7/044b8v7M040T6{6k8B5+5-0O7C0b5E3A8H7T7`8K7X3o8*5.5:7;8f8Z7Y6_872G8G8}8n8^6K8s1a5Q8R7t7?8%7U5U5f3#976U0#9k0C5y2`9k0b0D6 2e0+8;3u7`8~9c3x8W4i9B8m048o8M769t042y955^8g6L8P9O0Y6h9f8A7Q9R6b9n6G9r8h9S8 6t128U9*6K9m9.7=8#9W6|9Y1S8+4|722e0x9x2X9g408@8p7p7}5,8{a05a9d9P9;8O9!9;6#9J8q5W0m8t9b556w7(6P6R9X6Z7|0#5Ya54X8`0O9|0$9~aaa24e6:020E0x0(9%a78+8-8/1/9O8yasataX8)9Z8E938b9#6;aO6_9@aY9_a88,2`aSaG8?9$az5{9`5 aDaF9f7`7|707274a_68a!9289a%4V0)58534;be0)4@1A0x4_bj2%2Z21232#0w1.bg4@1Gab3x2R0W0O0V0w0p0m0O0H0t121s1u1w1y0IaV551N3k1H0i2.0I0w1h2R0I2I0{0#0D0;2L0L0I2o0Ia;0 3A5,9~0I0_0Ia{2e5:0IaR3d1:0laH2k1a2L0H5t0m0S12090k0u092`0V0x0U097@6B0.b,1kbCb=6b0I0FbV210F0^1:160$b@bN0L0E0L2A8jb_0F0I1}0mbXb,0x0I2|1kczcB0?2`1S5:0y0d1JbS040o00bX2$1:an0A2a181:b|1w0#cQ0C0FcV6b0L2R0{1:0#0Zc@1ycP2O4|1o1a0mcA1/0?b`5/1yc.2|c`b!c_0n1j0?di0?4|6b2o9 cAd63A0Z0F1/dbc;1a0$b+2Ob^deb|0mcw1%1S2o2.0d0I0rc_0?0L0n2LdadnbW2`2Kb@0wb}2e10dz0w2Mb_bN2|0W0Dc~0I0V0E0C1|9~cZc#1R1T3x1^1$1(1*bx3Z2x2o2q122D0g0Z0$10cP0e0U281j5652ab3455bde7407|7~9;80ae83dIbF0ZdD0maa9z7N9Q917#ap7%96b5908D7iah7?bP4sau7g6V6OeM8SeOaja67!a(8L8=9YeKa 9Y6W9O9Ie-8N7Re+a*eR7SeW9^av6 0.b39k9Ae#akeZe~a1a@047neP8_eZeL9yaq9eff7I047y9k8W7Fe^6T6:7Kfm9=7Of7e)eSe(7w12fefD5{e*eT04ckfHaI12fpfxfr7^b0alay9F40eyfX4n830j85b894fKfzfje_a!8QfA9Ge@3uc2fg998uf!6feUe:f.918FbafN2ka4g45c0Z12dS2.f eYa{a:8.b e{fx9s5fd`d-9Of,2X7`0y0c1200cf009Tgd7k7|0V9jgk9(agg76/9pb4gI6U6_f:f-e$04eV3GaX8(a.9{c_aEdsgjgM8ra8b{eCeEeGfkadf|fga+fKf?fb9_am9agz8zgVfU04axaOgfa}g#fxaJaLaNgFaP5 b~8:aUa,ataZg1a$a?8Ja^g%gGaoe gVf0gea/hdaTh6hnftf8h3gZa~g}gWf104b273e|6Ng2aa14bc4}2Yeo4?50hP0-0/0;0y04.

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

.128013n1.P8S*Up(àevDkdNA3+:ats2,Roblu=h 54é07_9[6x]yfm-)cBirw;/qg050q0m0x0w0#0E0y0I0Z0E0w0y0y0G010x0#0j010406050y0F0W0W0w0$0U040g0C0E0F0 0C0b0I020w0W0j0(0I0B0m190$0*0F0m0y050)16181a1c140j041A1H051K0)1K1M1H140q0#0n0@0_0{0}0H0#0+0H0E1!0H0x12050/0D0E0m1V0`0|011Z1#1%1#0x1-1/1+0x0D0C0q1c1,0$1I0x0H0@1f0y0j0w0b0}0z011;1X010V0;0m0b1n0m1+2c2e2j1?2m1/2p0W2r040a0I0e0$0C0j0C0y0#1i1k0-2a0$0$0m0Z2M1A2t0b1I0)282Y0x2625270q2v0}1%0b2o2J1+1S1U0^1=2,0#2.0b221T1+0j2R1I2W2Y33152d1k2@2k2|0$190E120I0c2V3713362u391?3b3d3f0z3i2e3k2W2+013p0w3e040I0t3t2X143w3n0}3z3B0I0K3F3v373x3L3f0J3P3H3R3J3y0C3c3A3f0R3W3l381W3o3#3q3C0N3*3I3-3K3/3%3C0f3?3Y3^3!3$3M0P3~3m403T040c0M453,2^413:0c3h1B3j3X464e480c3s4j3u4l4d3a3`3B0c3E4r3G3+3S4w120c3O4A3Q4m4v424F3V4I4t4D4M493)4P4C3Z4o3=4V3@4n4E493}4!3 4$4S0c444I1J311A2=2#0q2)3x0Z222B0,1T1I300m323j3P054|0-544K1?0p0b120V2G0W564#2k0%3f5j4+3a5e0419285o5b0}5m3C5v4u5c5r0#1o3#0x3P0I4W47120y0*0$5H4P064Q3Z0p120-0V5A3x5y5J4:5k3o0V5W0#0y0/0b0Z0m5Z3Z11040k5=5L042I2`0x0O0s5`4e5@0A5I5K4n125}0b5 0!622k5@0Y0v3W0I6k5J5(3K120S606e1?64666n3y120U6r4I6m5p1?0C120G6v6D6o5|0C5~6A33066l6C5w6x046q6d5%6J016u6B673a6y0O6X336S5B0}6F046H6$6w5r6a6c6j6l6%5c122R0x0F0$0b6I6T5r5N5P6s0}5@0k5_6Y766p6*756.016:0X7j3S7h617f7k6g7o3Z6:0h0h7v400W0#124q6,6}6/120u7A63127e356@6)6+3j6-3x7m7L6(046z7r7P6Z7u6?6Z7x7z7)6T7C7E7a6!120Y3W5S7H015V045X7;5#7;0b5*5|1g0y0O300C0Z0H5;7s3x7c81696M6b1z8d5?12657-7k5r0-2d798l406g6i4P6R7`6^8i5 888a8c7G6w6:6=8I6Z8C5~8k7$6T5@0Q7;7/044b8v7M040T6{6k8B5+5-0O7C0b5E3A8H7T7`8K7X3o8*5.5:7;8f8Z7Y6_872G8G8}8n8^6K8s1a5Q8R7t7?8%7U5U5f3#976U0#9k0C5y2`9k0b0D6 2e0+8;3u7`8~9c3x8W4i9B8m048o8M769t042y955^8g6L8P9O0Y6h9f8A7Q9R6b9n6G9r8h9S8 6t128U9*6K9m9.7=8#9W6|9Y1S8+4|722e0x9x2X9g408@8p7p7}5,8{a05a9d9P9;8O9!9;6#9J8q5W0m8t9b556w7(6P6R9X6Z7|0#5Ya54X8`0O9|0$9~aaa24e6:020E0x0(9%a78+8-8/1/9O8yasataX8)9Z8E938b9#6;aO6_9@aY9_a88,2`aSaG8?9$az5{9`5 aDaF9f7`7|707274a_68a!9289a%4V0)58534;be0)4@1A0x4_bj2%2Z21232#0w1.bg4@1Gab3x2R0W0O0V0w0p0m0O0H0t121s1u1w1y0IaV551N3k1H0i2.0I0w1h2R0I2I0{0#0D0;2L0L0I2o0Ia;0 3A5,9~0I0_0Ia{2e5:0IaR3d1:0laH2k1a2L0H5t0m0S12090k0u092`0V0x0U097@6B0.b,1kbCb=6b0I0FbV210F0^1:160$b@bN0L0E0L2A8jb_0F0I1}0mbXb,0x0I2|1kczcB0?2`1S5:0y0d1JbS040o00bX2$1:an0A2a181:b|1w0#cQ0C0FcV6b0L2R0{1:0#0Zc@1ycP2O4|1o1a0mcA1/0?b`5/1yc.2|c`b!c_0n1j0?di0?4|6b2o9 cAd63A0Z0F1/dbc;1a0$b+2Ob^deb|0mcw1%1S2o2.0d0I0rc_0?0L0n2LdadnbW2`2Kb@0wb}2e10dz0w2Mb_bN2|0W0Dc~0I0V0E0C1|9~cZc#1R1T3x1^1$1(1*bx3Z2x2o2q122D0g0Z0$10cP0e0U281j5652ab3455bde7407|7~9;80ae83dIbF0ZdD0maa9z7N9Q917#ap7%96b5908D7iah7?bP4sau7g6V6OeM8SeOaja67!a(8L8=9YeKa 9Y6W9O9Ie-8N7Re+a*eR7SeW9^av6 0.b39k9Ae#akeZe~a1a@047neP8_eZeL9yaq9eff7I047y9k8W7Fe^6T6:7Kfm9=7Of7e)eSe(7w12fefD5{e*eT04ckfHaI12fpfxfr7^b0alay9F40eyfX4n830j85b894fKfzfje_a!8QfA9Ge@3uc2fg998uf!6feUe:f.918FbafN2ka4g45c0Z12dS2.f eYa{a:8.b e{fx9s5fd`d-9Of,2X7`0y0c1200cf009Tgd7k7|0V9jgk9(agg76/9pb4gI6U6_f:f-e$04eV3GaX8(a.9{c_aEdsgjgM8ra8b{eCeEeGfkadf|fga+fKf?fb9_am9agz8zgVfU04axaOgfa}g#fxaJaLaNgFaP5 b~8:aUa,ataZg1a$a?8Ja^g%gGaoe gVf0gea/hdaTh6hnftf8h3gZa~g}gWf104b273e|6Ng2aa14bc4}2Yeo4?50hP0-0/0;0y04.