Aller au contenu

Exercices - série 2

Exercice 1 : recherche dichotomique⚓︎

Recherche dichotomique

Bob a voulu écrire une version récursive de la recherche par dichotomie.
Malheureusement son code ne fonctionne pas. Corrigez-le.

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

.128073.1280130rdkwTx;fh[C=]y4F)oc7m9:.v8bat3,élRS2+g_p(ni1q6/5s-u PIe050e0)0F0E0T0J0Z0$0v0J0E0Z0Z0o010F0T0Q010406050Z0#0x0x0E0d0q040L0u0J0#0}0u0S0$020E0x0Q0j0$0K0)170d0V0#0)0Z050X1416181a120Q04051F1y1I0X1F120e0T0B0=0@0_0{0@0S0O0#0E0O0)0!0Q0q0F0l1h0$0l0T0O0l0J1.0l0F10050-0D0J0)1R0^0`011-1/1;1/0F1`1|1^0F0d1G1)0=1d0Z0Q0E0S0{0M011~1T010k0/0)0S1l0)1^2g2i2n202q1|2t0x2v040b0$0%0d0u0Q0u0Z0T1g1i0+2e0d0d0)0v2Q1y2x0S1G0X1)2$2a2c2b1_0e2z1U0T0S2s2N1^1O1Q0?1 2:2=0S0u2_1^0Q2V1G2!2$36132h1i2{2o2 0d170J1^0E1,2V0k0{030P0P0v300)1;2~0u0!0c0!0U100$0U1y0E373a11392y3c203e3g3i3k0)3m013o3q3s3u2?3x0!2l040$0M3E3G2i3I2!2/013N0E3h1G3j0l3l3n3p3r0+3X2 3Z0G3B0G3)2Z3H123-3L0{3:3=053@3_3T3{3W2;3Y3y0r3B0r441z463J3b1S3M0u3f3;3P3^3R3`3V3}4j3 3y0Y3B0Y4p36473a3.4b4z4f3U3|3t4F3w3y0W3B0W4L4r484u4a4w3O3?3Q3S4T4i3v3Z0w3B0w4$3+4N3K4)3/4+4y4-4A4/4h4E4=3y0C3B0C4`2#4|4t2|4 4x4c4e4B4g4D4V570!0y3B0y5c3,4O495h4,4d4.4C4U3~4X3z0c100U0c5u5e4P505j5B5m5D4W3Z0U3A045V5L4s5N5i4R5l4:564k3z3#0U3(0X3F454{5!5x4Q524S555o5+0U415X435:3*5d5@4~5_5A535C4;5~4m5X4o635=654(5g685k545n5E5U4I5X4K6h4q5?6k3d5O5%6o5S5p0U4Z5X4#6v381L341y2_2)0e2c2.5x4U2^1P1G330)353H6i1G4U6!2y0T0e0{3p2!5U3P6+6-6p5T3y3A0$2D0)6?6D5~1^6h6y200f100+0k6$665g0g3B79734a0k102V0v0l0)0d7k0)7e5w4~0 040R7q4}6l100:0F7w5f2o7t0H6$0$7a3d100i7C3.7t0t0z6$126w2#5!6=016.3a3Z3#5A7X5|6q3y2l6{2u6~6c4G3!715;7f017c3$0$7|7N5x0Z0e1001837S7N7(0P6/3y607%6,7Y6@5p417-2E7/5*7;8b727r5g803B7|0$0n0,0F1}0k1h2X0T1+2V0S0B0u0T1}0h0d1v0$2O0$0i0$1w0F0$0e2i0;7A0H8R8T0s3;0Z1}2O2 0S857U6)1i87890!6e8c8k5}7;4m8i6}8e6 8{7?8/3.8r7{7|2J0I3r0S1O2Q0$0z8P9e0$2;0F8Z7A9h1;0Z8T0,0$2a0T0I1}2s0$4w0e2V0=2K0T0_2i7B8.7T383-8;7!4H6;8d7)6^0!4I8}8_7*9T927J20958t2I2N0F9a9c8C1i9f0v8w8y8A9d8E8G8I8U0#9s0q0Q1}0D0u1d9v8,9I869Q889N0!6G8^8 7:5F4Z9Vae8lag9Z7^9$8t83018-9K4O9M2i4?9P9W9S4@ai9R5p4@2$3F9J6#9La88=594-87905F59aC8f5+aN3)9%9!0{75040T788.7I7^0S0D7z2s7~7s107v8.aZ3/7z9pa:5g7P7Ha^0u100o0oa 7^0x0T105Ka@7^7t7Ra6bbauaLaa5raOa8aQ3Z5raTbn3ybkaX9%8ta^a#2V0F0#0da536a*8p2o0f0v108$0:7pbfat6*biaw6_5Hblaz6E5Hbqaf5UbUbu7}a+100xb5bG20b104b4a)a^a,a.bDaJb-0{7ta?bP7D3Ma`9Hb 7O100tb,7x2ob/0X0Xc8c00{b7105/4Ma76?8=5Vayaj8`5FcobZak5U5Wb%bFc97410a%ce4Pc2a|7E100mcHc104b+bgcAb|100pcE5xb/b3cU677LcLcR04beckcP8:bR0S5U7$3jaPb!6_7,6|bW5~7$63bvbw7^by0,bBb_3+czcf01bI108K1vasb`bQcmaa5 cpaD5~8hc^cq9XdhaG96d53.a#4Va(bEb?cGc*c504cKdA5^b*c#017tcTb=7^b/020J0F0jcY7y047MdEa;c%dc3+7Wc,5U8@c:bmc=3z8|dmdj7;0U8@c|c}ds5xd0bAbCdS7K047j7l7n7ldHb}dH0Sdzc45x7tdDe9cZcNd}b.100Negcgb85Xe4100z0p7GdLb{a_dUeo04c7bOddc+dfbS3z6sadd/cs9Ud.aUd:eGd?b(eudubMexc(4rdAavc-6_acd)c_d:aheLbr3zacePbvbx7id1d|etcQeve07m7oexb~eBcF047Aex0meVd!b)efdWa}cSesdxf7dVedfaeydZ7V0X6(1J6M0X6O1y0F6Qfr2,2%0E1{6Z6N6W1E935x2V0x0P0k0E0f0)0P0l601q1s1u1w9e791L3I1F0a0$0(0J0$170S1u0.8T1|0;056(bzd21y6(0$0Af^1J3Ifp0,0.0:04.

Exercice 2 : parité⚓︎

Parité

Compléter la fonction suivante qui doit être une fonction récursive.

⚠️ Il est interdit d'utiliser %

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

.1280130rbdakwtT3,x;élfEhCS=2y4g_p(ni1F)o6/5ces7m-u9 P:v8050e0N0i0f0E0p0O0U0M0p0f0O0O0v010i0E0B010406050O0S0Q0Q0f0c0x040u0I0p0S0?0I0D050K0}0 11130{0B04051j1c1m0K1j0{0e0E0X0+0-0/0;0-0D0z0S0f0z0N0R0B0x0i0s1a0U0s0E0z0s0p1O0s0i0_050$0d0p0N1v0.0:011N1P1R1P0i1X1Z1V0i0c1k1J0+160O0B0f0D0;0w011#1x010q0(0N0D0f0Q0N1V1`1|211%241Z27290_0a0U0V0c0I0B0I0O0E190D0U0!1^0c0c0N0M2u1c2c0D1k0K1J2H1;1?1=1W0e2e1y0E0D262r1V1s1u0,1$2R2T0D0I2X1V0B2A1k2F2H2.0|1{2v2Z222%0c100p1V0f1M2A0q0;030A0A0M2(0N1R2$0I0R0F3c0_0U0F1c0f2/2=0`2;2d2@1%2_2{2}2 0N3101333537392U3c0R1 040U0w3i3k1|3m2F2Q013r0f2|1k2~0s303234360!3B2%3D0k3f0k3J2E3l0{3N3p0;3Q3S053U3W3x3Y3A2S3C3d0y3f0y3+1d3-3n2?1w3q0I2`3R3t3V3v3X3z3!3}3$3d0L3f0L432.3.2=3O3=4d3_3y3Z384j3b3d0J3f0J4p453/483;4a3s3T3u3w4x3|3a3D0P3f0P4G3L4r3o4J3P4L4c4N4e4P3{4i4S3d0Y3f0Y4X2G4Z472!4$4b3?3^4f3`4h4z4.0R0T3f0T4?3M4s3:4{4M3@4O4g4y3#4B3c0b0_0F0b584^4t4%4}5f505h4A3D0F0F5m3h0K3j3,4Y465r4|4v4 4Q4-3~3c3F0F3I5D3K4@5H5b4u4)4w4,525O0F3(045(5p5W4#5Y5e4*5g4R5%405*425T5F5V4I4`5/4~4+515i5y4m5*4o5{445G5~2^5s5K625w530F4D5*4F694q5-5 6e5Z5L5#643d0F4U5*4W6n4H5a5.6r5:5!635x6w4:5*4=6B6b6D6q5J6s6g5?4k3c555*576O5}6Q6d6S6G6t6I530w5l046.5,6c496)615=5N6W0w5A6:5C5E6a6$4!6R5d6_5v6V5j0w3F7b581n2,1c2X2K0e1?2P5b4y2W1t1k2+0N2-3l5|1k4y7u2d0E0e0;342F5y3t7B7D6,5%202i0N7J6h7L2H5E6?0;0g0_0!0q7w6p220h3f7!7U3P0q0_0N0O0i0A1{0E0c7)6%1%0^040C7^742^0_1b727z4_227{0W7w0U7#3q0d0_2S0i7~857`0_0H898b0;0I0_0R020z0i0n8m7*0D8d040d0I168h3O877w0{835H7I017E2=3D3F5e8L6u6J3E7M287O8M7K6|1V5{7*7%3G0U8+8E5b0O0e0_018=8H8E8S0A7F3d5)8R7C8Z7Q6W3(0U7N7P793%8$7T7_0;8/3f8+0U0t0#0i1!0q1a2C0E1L2A0D0X0I0E1!0j0c0S1!2s940U7.0i0U7=0c0l0U0G3R0O9z2S1a8@8J3N8_8{0R5^8~966{5j40948X9Y5$6W9W8%9b019d8*8+2n0o360D1s2u0W9B9D0U0S2v260?0N0c9F2r2t0E0q0U0I0S940S0p9Q2:9S8 8N1|3D669X90974l8W299(6v0Ran9,7 1%9/9f2m2r0i9@9_9o0D9{0-0U0X3R0N0Sa42A0iab0c0D0o1!9}2x0i0x0B1!8B16aX826o9R4s9T8O4C7Haj8!5j4D9$atap9Z3D6k3+7*aB9f0r0m0N0Q0B1Z0U88838Iaha/a@9U6yao8T534Ua{8Ybl5Obj5Tbe7vai7J9U6Lbka^3D4:boau8Ubzay8i9c8:9:0U8s8ubO0nbQ9C7/7;0%0c0C0y8lbd8^bha;54a?bF5355bEa}9)5j6Yb19-b38+9w9yagbvbgbxb(5nb*b/avc1b.bq6Wc17S843Ob^bN8tbRcfbS9DbV7?0C0Lb!a-bf7Ab%al6w6~bA915j5zasbpbBcu99cb8.bLaC9K0)0Nb|3L8Kcs0D5y8Q2~8_cxcRcAb+5%8QbIcccH9fbQc)cfbT7:9G0C0bco45a.crb ct3c8}cTa@cV6w9395c38U5(cE8n9.c%b_9xcLb#c?2va:c_0F9Wc|cYc89#d1c7cy9+3jbucNbw8Z9U0Fandjd26i4mc6cC3cax9aazbK9e8+8=01cM2GcOc^cQ6wb0dzdo5ya`dndE6jcEaCd67W041$a38g838a8x818w9-8p04bQ0vd=dI010Q0E0_5od.d67{0l8-4#0O6~00a07/9~a00Da2a42q2s0?a9abad0p00dOcbdfdS3cbjdVd!bndZc~eud$9fd(8e7Ze2d:04a,3ld/d?0_0vd`eH9-d~e0e64`8GdccqdecP5ybzeweA0FbDezaq3cbH3jaCd%7*d)aSaQeK3LeMd|0g0M0_b`dbcpb}c@dvc0b=e(e-0Fb-e,a~6wb=5Te=9-d)4zeG2.e|bJ3Pd;eRd|d@ePd{fpeT5*eV860_bcf3dtb~f6c_6.c2dW3dfJdDeAfJcae;eDe?0_e^aVfw3Oe~0_cJ9MeqdQfHet6}fKdEf,fOe-f,fRfTfj7-cKfA8j04fDc=eZ0Ues8PcSg1c}f;1 f:fe3Ec!e:fSfofZfV0#e_fY5X7-bU9Gf{0;7{7}dd4tfrfnd6d@0Rgk4#fy5Sg05b7{c;5G8J0K7y7f7t7h7q1c0i7kgQ2N2I0f1YgN0K7i8I0!0$0(0O04.
Indice pour la parité

n et n - 2 ont la même parité (tous les deux pairs, ou tous les deux impairs)

Exercice 3 : longueur d'une liste⚓︎

Longueur de liste

Compléter la fonction suivante qui doit être une fonction récursive.

⚠️ Il est interdit d'utiliser len

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

.1280130rbdakwt3;lfLh[S=2y]+4g_p(ni1)o6/5ces7m-u9 P:.v8050e0K0i0f0C0l0L0R0J0l0f0L0L0r010i0C0z010406050L0P0N0N0f0c0t040q0F0l0P0;0F0B050H0{0}0 110_0z04051h1a1k0H1h0_0e0C0V0)0+0-0/0+0B0x0P0f0x0K0O0z0t0i0o180R0o0C0x0o0l1M0o0i0@050!0d0l0K1t0,0.011L1N1P1N0i1V1X1T0i0c1i1H0)140L0z0f0B0/0s011Z1v010m0$0K0B0f0N0K1T1^1`1 1#221X25270@0a0R0S0c0F0z0F0L0C170B0R0Y1?0c0c0K0J2s1a2a0B1i0H1H2F1/1;1:1U0e2c1w0C0B242p1T1q1s0*1!2P2R0B0F2V1T0z2y1i2D2F2,0`1_2t2X202#0c0~0l1T0f1K2y0m0/030y0y0J2$0K1P2!0F0O0s0O0D0@0D1a0f2-2:0^2/2b2=1#2@2_2{2}0K2 01313335372S3a3a0@0s3g3i1`3k2D2O013p0f2`1i2|0o2~3032340Y3z2#3B0j0@0j3F2C3j0_3J3n0/3M3O053Q3S3v3U3y2Q3A3b0w0@0w3%1b3)3l2;1u3o0F2^3N3r3R3t3T3x3W3_3Y3b0I0@0I3 2,3*2:3K3.493=3w3V364f393b0G0@0G4l413+443-463q3P3s3u4t3^383B0M0@0M4C3H4n3m4F3L4H484J4a4L3@4e4O3b0W0@0W4T2E4V432Y4Y473/3;4b3?4d4v4*0O0Q0@0Q4/2F2)0K2F2V2I0e1;2N3,014u2U1r1i562+3j3(3H054u5l2b0C0e0/322D3B3d4J5t5v4}3X4x3c1~2g0K5C4u5E5y1T0H3h423K0g0@0Y0m5n2E5R5e0h0@0R5X5r4=2?0m0@0l181z0K0P0c5(5Z4X0?040A5@4E4?0B0@1,0K0f0P5}4o5e5`0T5(5%5~2?0d5-0C0L0i664W4?5`0E6b5^4?0F0@0O020x0i0k6p6d3o6f042Q6j405o6A0/695(0_6G5Y3J5B015w2:3B1}5A5u6R5D4w6U5H265J6Y5L6!3b6V3%6I015#040R6?5%6N5)3K0L0e0@016 6L6k2t6Q6S1`3Z3r746Z4 3!0R5I5K4N3`0O3!2F5Q6/6|5$6@0n2|0m182A0C1J2y0B0V0F0C1Y0+0R5.1y0P5;0c2u1Y6264716_5R795x3{786X4(4~7h3|7d6%7f4)7Y5O7l674X7n6=6@6 017O2.6P7V0y7S0O4i6W7$7X4g7{6$277~5M4h7)7.6?6q205T6D5W6_6c7+5 610f1W63658f8a1#6s040r0r6z8h205`0p0u6a6_6M7?4o7R6T4y7U846+0O4z7!836)7g804z7k886@896/8c2y0i5=198o6/0N0C0@0b7=5m7@5C7`4Q7}8Q7%804Q8O6(7W850O8?3F8W8p0/8c360L0K723K6K8C9a8G764+8J8^7 5F4,8|8K4 4,8U8W936/60047M8n8E6l208r0U9a5e9v2o0z9E5_0@0A6o9d7P8:6Y7`518@8~8L519n9j8 9T929s8X8w1#8Z0Z8$8v9A1#8*3e9.5*8q0@0v9?4p5-5/7H5=9J6m9La12?8j8l7N9P9)6J0@9N4m5@0H5q1l2*1a591a0i5bam2L2G8k1X585i6M0Y0!0$0L04.
Indice pour la longueur d'une liste

Vous pouvez utiliser .pop()

Exercice 4 : bégaiement⚓︎

bégaiement

Ecrire une fonction récursive repeat qui prendra en argument un entier n et une chaine de caractère txt, et qui renvoie une chaine de caractères qui contient n fois la chaine de caractères txt juxtaposées.

Exemple: repeat(5, "bla") renvoie blablablablabla

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

.1280130rbdakwtè3,x;élfhCS=2y+4g_p(niî1)oq6/5cNes7m-u9 P:.v8050e0P0i0f0E0p0Q0W0N0p0f0Q0Q0u010i0E0B010406050Q0U0S0S0f0c0w040t0I0p0U0_0I0D050L101214160~0B04051m1f1p0L1m0~0e0E0!0.0:0=0@0:0D0z0U0f0z0P0T0B0w0i0r1d0W0r0E0z0r0p1R0r0i0|050)0d0p0P1y0;0?011Q1S1U1S0i1!1$1Y0i0c1n1M0.190Q0B0f0D0@0v011(1A010q0+0P0D0f0S0P1Y1}1 241*271$2a2c0|0a0W0X0c0I0B0I0Q0E1c0D0W0%1{0c0c0P0N2x1f2f0D1n0L1M2K1@1_1^1Z0e2h1B0E0D292u1Y1v1x0/1)2U2W0D0I2!1Y0B2D1n2I2K2;0 1~2y2$252*0c130p1Y0f1P2D0q0@030A0A0N2+0P1U2)0I0T0k0T0G0|0G1f0f2=2^0}2@2g2`1*2|2~30320P340136383a3c2X3f0T22040v3l3n1 3p2I2T013u0f2 1n310r333537390%3E2*3G0k0|0k3L2H3o0~3P3s0@3S3U053W3Y3A3!3D2V3F3g0y0|0y3-1g3/3q2_1z3t0I2}3T3w3X3y3Z3C3$3 3(3g0M0|0M452;3:2^3Q3@4f3{3B3#3b4l3e3g0K0|0K4r473;4a3?4c3v3V3x3z4z3~3d3G0R0|0R4I3N4t3r4L3R4N4e4P4g4R3}4k4U3g0#0|0#4Z2J4#492%4(4d3^3`4h3|4j4B4:0T0V0|0V4^2K2.0P2K2!2N0e1_2S3=014A2Z1w1n5c2:3o3.3N054A5r2g0E0e0@372I3G3i4P5z5B533%4D3h232l0P5I4A5K5E1Y0L3m483Q0g0|0%0q5t2J5X5k0h0|0W5%5x4{2{0q0|2D0B0P0f0i5.5)4%0{040C5|4K4|0D0|1e465u63255 0Y5.5-6a3t0d0|2V5{685(6g0@5 0l6e5}640|0i0m6l2?6o016c6s6A0D6i040Q1@624u5k5 0H6D6L4%0I0|0T020z0i0n6P4$646G6I0c6Z5:1*6C6m3p6-5X5H015C2^3G3I3_0W6;4.54403H5N2b5P6=5J4C6^5U5W6A5+040W7d5-6/6A0Q0e0|017l5.0~7g4u6|0A5D3g3*5G5A745R767u712c5Q4T6 7v3-7h7j7c7e0Y1~0c2b0W0D0Y2z1%0i0w5^0W290_0P0c0Z0W0O0I0S0d2D7U0W0q0I0E0-0J0U1%0p001O2D390B0E7`310N0r0f0F2W7/0N140f2F0j2D0Q0Z7n6K5y7x6?1 3G427w7E4/6 427R728r6~4m0T8p7I6Q4|7i5,7M7O7Q6w0i7T2A7W7Y6%7(0s853 898b8d8f0W7^7`7|2y0e7=0i0W0c0o0B0o0i7$8h6-7o6z7q8l7s6@4n3w7r7z554o8v7D7y7F8z4o2K798D258F7L7d7l018i7p8k5I7t0T4F8q958s8z4F93736}5S4E789e6f9b1*5Z040E5$6-9B6!2{666)3Q6S040u0u9N5k0S0E0|0b9T5~0|6d8?8j2y7r9m4W9p9w7A0T4W9u8x9x9:9z7e9`9J6*0@9E2D0i0U0c672;9|3Q0Q5F00009i8^9k749m4=9-75554=9=9q8y5Lah3L9`6t259E3b0Q0P9Z4|6,4s9(6{8`9m57ai906 57am9.55aHar9{7dat9D5?0(a2a43oa65k65048Kaz259P0xa)3taV5^5`aD6M0|619j9}3R9M9IaT0@9P0Ta-0@9V3ja=9!046ra}6E6v6xb6aA0|6O9%6/0L5w1q2/1f5f1f0i5hbq2Q2L0f1#5dbo5o7o0%0)0+0Q04.

Exercice 5 : La tête à Toto⚓︎

La tête à Toto

Compléter la fonction récursive toto telle que :

  • toto(0) renvoie '0'
  • toto(1) renvoie '(0 + 0)'
  • toto(2) renvoie '((0 + 0) + (0 + 0))'
  • etc sur le même principe

On garantit que n est un entier positif ou nul.

Compléter ci-dessous

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

.1280130rbdakwtê3lfhS=2y+4g_p(niU1)oq6/5ces7m-u9 P:`v8050e0J0i0f0z0l0K0Q0I0l0f0K0K0p010i0z0w010406050K0O0M0M0f0c0r040o0D0l0O0:0D0y050G0`0|0~100^0w04051g191j0G1g0^0e0z0U0(0*0,0.0*0y0u0O0f0u0J0N0w0r0i0n170Q0n0z0u0n0l1L0n0i0?050Z0d0l0J1s0+0-011K1M1O1M0i1U1W1S0i0c1h1G0(130K0w0f0y0.0q011Y1u010m0#0J0y0f0M0J1S1@1_1~1!211W24260?0a0Q0R0c0D0w0D0K0z160y0Q0X1=0c0c0J0I2r19290y1h0G1G2E1.1:1/1T0e2b1v0z0y232o1S1p1r0)1Z2O2Q0y0D2U1S0w2x1h2C2E2+0_1^2s2W1 2!0c0}0l1S0f1J2x0m0.030v0v0I2#0J1O2Z0D0N0t0N0B0?0Q0B190f2,2/0@2.2a2;1!2?2^2`2|0J2~01303234362R390N1|040Q0q3g3i1_3k2C2N013p0f2_1h2{0n2}2 31330X3z2!3B0k3d0k3H2B3j0^3L3n0.3O3Q053S3U3v3W3y2P3A3a0t3d0t3)1a3+3l2:1t3o0D2@3P3r3T3t3V3x3Y3{3!3a0H3d0H412+3,2/3M3:4b3@3w3X354h383a0F3d0F4n433-463/483q3R3s3u4v3`373B0L3d0L4E3J4p3m4H3N4J4a4L4c4N3_4g4Q3a0V3d0V4V2D4X452X4!493;3?4d3^4f4x4,0N0P3d0P4;3K4q3.4_4K3=4M4e4w3Z4z3b0b0?0B0b564?4r4#4{5d4~5f4y3B0B3c045x5n445p4`4t4}4O4+3|3b3D0B3G0G3h3*4W5C594s4%4u4*505J0B3$5z3(5O3I4=5S4Z5U5c4(5e4P5Z3~5z405(5Q5*4G4^5-4|4)4 5g5w4k5z4m5_425R5|2=5q5F605u510B4B5z4D672-1m2)192U2H0e1:2M594w2T1q1h2(0J2*3j5`1h4w6C2a0z0e0.312C5w3r6J6L615v3a3c0Q2f0J6R6f5Z1S5_6a1!0g0?0X0m6E5+4^0h3d6.6(3/0m0?0i0D6{6?584Z0=040x6~4Y5}0?18682D6/1 710C0S6E0^796H2s6Q016M2/3B3D5c7l5X623a1|6W256Y7m6S517q6%6 6:3d0Q7I744@1 0K0e0?017Q0A2Q0Q0m172z0z1I0i351W0Q0E0O1X7f7i7h2-3L7s0v6N3a5#7r6K7A6!4i0N3$7x266Z5;7|7@5(7-6D7/7_7n1_3B5?7^815I7|3~7 7z7t6T396$5P6@017N7H7I0N0Q0T6{6{0x0b0C0T0Q2x0y0U0D0z1X0T000b000T7g7K0Q7:7=0N648e7`825h4k8j8f5Y7|8W7E757M7O3E7I0Q8v8x6|0D0x0B8C8E238H8J8w008A0Q0s0Q8B8O8Q7i5C8T7o4A6P897B5J4B8$8Y8g5h6i3)8q8s8/8u8w8y8^0q8{8F8~8K9192948B930Q9C950C0C977,8R9b8b3a4S4L7:7{5h4S9j8l519R9o7F8-8t8;0Q0Y0I0Q0`0c0Q7$0M0j260Q2(2P0I0;0J987.4q9O0y3B4.9S9f9Ua31}6X8%7u0Na43H863J9a9f8U53a5ab8m539X9g7|al9#8,1!9q8:6W9*0K0i0Q0O2s230:0J9/2n2p0:6-9M99886R8U5l9ean6g5jaqa76U5j2E8p9$aw8.ay7Q019~87a0aj9c3b5y8X9Y5Z6Vaa9k8(5h5x8o3kaPa:aRa=5MaUa}acb7aY8Z5w7D3hay7b6)0?0zaN2+0Qbi3/776Ebo8q0D0?0p0pbsbp010M0z0?5mb3av0.717+4o9Na;9P3b7@2{9Tbd6U7~a|a_7|5!b1aybh8q6*042x0i0O0c78bnbA0K5y8M00a.ahaQ7AaS8dbRa6bT3b8ibWara 8d5(b$a(0.b(350K9}bG7L1!bJb^7ab`8aa26U8Wb~aV5Z8#c3aZ3b8*bgb#7J8q0y0?0M6|blbzbubwcHc93N6`8@8R597173cf4rbr7ibtcLbv040NcKbHbBbD5zcP700?0Ccj7j8SbNcn3b9ncqb98m6ha97ycrbY9nc7czcXc%b(b*b,b.3jd4cg0.b;0?91b@cWbAcZ0sc$dccM04cEaMdm3Mdkds59de04009Fdhb/cI04dldicBcDcFbmdadj0?dFdCcLdx009Kc/196G1k6o0G6q190i6sd#2K2F0f1V6B6p6y7h0X0Z0#0K04.

Exercice 6 : Test de palindrome⚓︎

Palindrome

Un mot est un palindrome s'il se lit de la même façon de droite à gauche comme de gauche à droite.

Exercice

Écrire une fonction récursive est_palindrome qui prend en paramètre une chaine de caractères mot et renvoie le booléen True si mot est un palindrome ou False sinon.

Premiers indices
  • Le premier caractère de la chaine mot est mot[0]
  • Le dernier caractère de la chaine mot est mot[-1]
  • Pour une copie d'une tranche ("slice" en anglais) du second jusqu'à l'avant-dernier caractère d'une chaine mot, on peut écrire mot[1:-1]
Derniers indices
  • Si la chaine fait zéro ou un caractère, c'est un palindrome.
  • Sinon on peut comparer le premier et le dernier caractère.
  • Enfin, un appel récursif permet de répondre sur le reste de la chaine.
Palindrome

Compléter ci-dessous

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

.9888.1280130rdkwTx;fh[C=]y4àAF)oc7m9:D.v8baèt3,élR!S2g_p(ni1q6/5sç-u Pe050e0-0J0H0X0N0%0+0x0N0H0%0%0o010J0X0U010406050%0*0z0z0H0d0q040Q0w0N0*110w0W0+020H0z0U0j0+0O0-1b0d0Z0*0-0%050#181a1c1e160U04051J1C1M0#1J160e0X0E0_0{0}0 0{0W0S0*0H0S0-0)0U0q0J0l1l0+0l0X0S0l0N1=0l0J14050;0G0N0-1V0|0~011;1?1^1?0J1~201|0J0d1K1-0_1h0%0U0H0W0 0R01221X010k0?0-0W1p0-1|2k2m2r242u202x0z2z040b0+0,0d0w0U0w0%0X1k1m0/2i0d0d0-0x2U1C2B0W1K0#1-2*2e2g2f1}0e2D1Y0X0W2w2R1|1S1U0`232@2_0W0w2}1|0U2Z1K2(2*3a172l1m2 2s330d1b0N1|0H1:2Z0k0 030T0T0x340-1^320w0)0$0)0Y140+0Y1C0H3b3e153d2C3g243i3k3m3o0-3q013s3u3w3y2`3B0)2p040+0R3I3K2m3M2(2?013R0H3l1K3n0l3p3r3t3v0/3#333%0K3F0K3-2%3L163;3P0 3@3_053{3}3X3 3!2^3$3C0r3F0r481D4a3N3f1W3Q0w3j3^3T3|3V3~3Z414n433C0$3F0$4t3a4b3e3=4f4D4j3Y403x4J3A3C0!3F0!4P4v4c4y4e4A3S3`3U3W4X4m3z3%0y3F0y4*3/4R3O4-3?4/4C4;4E4?4l4I4_3C0F3F0F4~2)504x30534B4g4i4F4k4H4Z5b0)0A3F0A5g3:4S4d5l4:4h4=4G4Y424#3D0c140Y0c5y1N381C2}2-0e2g2=5B4Y2|1T1K370-393L493/054Y5)2C0X0e0 3t2(3%3E4;5;5?5r5I5_2q2H0-5}5H4!602*3J4w3=0f140/0k5+2)6a5B0g3F6g5/5j3h0k141A0J0T2l3y0e2O2I6m6i5213040V6A4,5k0W140z0w0J6G5A6C140v0B6m164u5,3;5|015@3e3%3)5E6Z595s4o3(612y644^6-6(0#696H2s6k3*0+6~6O515k0%0e1401760C0M0J0-3j4n0+2S0+6L0J0+6s0+0*1m6v2^6x0w2I76016U701m6*0T5^3C455{5=6!5~667B6/2I6;5a6-7C3-6V3c6Y7E6#2m3%4q7D7L6,4K0)4q0+627Z5 4p1|6^6}6 6`246c040X6f6W2)0+6B6I0G142G7w3=6D6F7`6n4T6K6M825B6D0v6m7|7;0 0w14020N0J0j8f7}2s0z0X143,868q246D6T867Q5*7S5}7A3B3T7y655t4M7(6:7F8K6-4M687/6~8V8x0 7?2Z0J0*0d0W8p8h010f0x140h0d1z7v8w8E7F8G4%7Y8P6=7#4%8N7K8|7M8~7-3J8V8g6P5k7?3x0%0-8b6Q048A4Q827y8G4{8{6+7+0)4{9063927!5J9n3-97978X8+147^8)993h896N8?9H8y140m9f5k8s145O9L712s6D0p9G9W248j040P0o9!6o3Q9J9Q9X9O9/9$140)9=0 9S043H9V9,0 9Y9i4v9~0+9l6$5c8I7T7G5t5d9t7*7H0)5d8T9Aak989#8Y148!8$8(86am9 8+8-040u3^9d8=7R4Sa67V3C5v9oab6-5vae9v9qaI9zal9C9b0@9ea48c14a24 9kaa8G5Na9af5ta)aN9paga)ajal9B8*8Z0:ar9+88046s6u3^7p6yaWaDan01849_3?9.aX9g9Pbc9R8t9|b98zb99%9^bf8rbh9}b5av9Y8e8B6A0#5.5Q5(5S5#1C0J5VbE2:2+0H1 bB0#5T1I875B2Z0z0T0k0H0f0-0T0l7C1u1w1y1A0+a!6h1P3M0/0;0?0^5B337a0+0e0M0U1^0M2z0+2P2w8i0U2w144b191w1e0t1j2Z2X2Z2#0X1/2Q0}0XbL2%c81Gb.1T3=1Z1#1%1)1+1-1/261@1_1{bQ522F2w2y140,1,1.as3c5%6n3.6hbz8@7U0W0)0!3Da*aO66cY3Ea.aK43c%2q575G8}3Ac,8TaT6d3Vb96|7|bo3Q6qa~0%6t7o0W7q6zc}a01485bsa}7hbj6Rb+3Ma4aFcWcY6(3n8Jc:cX6.c)8Qc+drc.5qdtc;6.c?8*0%3)01787a7c2_7e0X7g6M7jd17l7nb1d4b37ubwdia%6$cY7Odnaadydq45dsdpd!c-4Wa/4_d-8T8C6XaEdY7VcY7X6)d%d,7$7J9ud:3$d|d.5p4@93dzd}7.a@9Mao7@7_3aau4T7 0481d7b7d9b96J04ddep8da|5B9%8l8ney529{8vdbaY9haC8Dd_8FdZ8HaJd(cY8M7)c#d;8H5Fdxe08SaRakc@04aq8%eD9aax8/8;dWdbdjdq8`d~a+e5cXe2e`du8 dwe99we@958Ue(9cb4eLb6bke;fa7xd`dk9rc!e4du9seUfkdz9sf1fodq9yedaSa^apa`e+at9CeteveHbdb99{9UfF5k9Ye,2s9%0o9*fB8*fD8aew9;epbmfHbqde049ZfSef010w6|2m0efN9-d0d2dSd5f9d^fberepfU9KfK9:04beg0249{brfe83aZbl9@f!5Mf$0pbv9j8wby3w2*cPbC0E3M1Jb$1c1y1l0^b(0+0{b_0-0*0i0X0I2I0+2l0d11210e0*7|5.f.1C5.0+6F5.a d3f^0V7h0m0Y0B3DgggRgl0v7(219d0d3n0M0E3^0*b~7j1mcKcy1mgx7f5-glg!0c0p0+fQdM0J0mg(g*0/3*7kg=g@0M0+0sgOgle/aWgS0Vhg1i0H2UgH1c1A9d0*9d0v0D1Ndhb/0=0@cq2~520H0e6L0W2Tch1m0g1chO1!c61L3=hLhNhP1l0)110J2c04gs1xe:1Q1L040a0+0n0:b^0%1h1jhQhj0+0G0|gL213v0U0Xi20+010%1^0x1A2q0V2e2m0x0lb)2w0+0kg:0W0(0=0%g,0W007k2l0^3V2u0x0Hic0L7(0whz0+0E7b2O0W0^b|iH0;0d2=7m210z791.2WiOiy0kiAiC210HiJ0xgyb)7p0Xic0%hCb-6VbO5S0:hG0%04.

Exercice 7 : triangles⚓︎

A faire

Écrire deux fonctions (procédures) récursives triangle_bas, puis triangle_haut prenant un entier n non nul en paramètre et qui affichent un triangle. Ces fonctions ne renvoient rien.

Python Console Session
>>> triangle_bas(4)  # affiche un triangle tête en bas
####
###
##
#
Python Console Session
>>> triangle_haut(4)  # affiche un triangle tête en haut
#
##
###
####
Triangles

Compléter ci-dessous

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

Solution

Attention

L'ordre des instructions est bien sûr important !

Python
def triangle_bas(n):
    """Affiche un triangle tête en bas"""
    if n > 0:
        print("#" * n)
        triangle_bas(n - 1)

def triangle_haut(n):
    """Affiche un triangle tête en haut"""
    if n > 0:
        triangle_haut(n - 1)
        print("#" * n)

Exercice 8 : Si vous avez du temps ... problème de la grenouille⚓︎

🐸

Une grenouille doit monter un escalier. Quand elle saute pour monter, elle monte de 1 ou 2 marches.
Combien de chemins différents existent-ils pour un escalier de n marches ?

Vous êtes en complète autonomie pour cet exercice facultatif.

👉 Montrer au professeur votre solution, ou vos tentatives.

La fonction nbre_chemins prend en paramètre un entier n que l'on garantit strictement supérieur à zéro.

Compléter ci-dessous

###(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 : 20/20

.1280130rbdakwtè3,;élRfhCzS=2y+4g_p(niA1qo)6/5cNes7m-u P:.v050e0Q0i0f0F0o0R0W0O0o0f0R0R0v010i0F0C010406050R0V0T0T0f0c0x040u0J0o0V0^0J0E0W020f0T0C0m0W0p0Q120c0I0V0Q0R050M0 1113150}0C04051A1t1D0M1A0}0e0F0!0-0/0;0?0/0E0A0V0f0A0Q0U0C0x0i0r1c0W0r0F0A0r0o1)0r0i0{050(0d0o0Q1M0:0=011(1*1,1*0i1=1@1:0i0c1B1!0-180R0C0f0E0?0w011_1O010q0*0Q0E1g0Q1:2b2d2i1{2l1@2o0T2q040a0W0X0c0J0C0J0R0F1b1d0$290c0c0Q0O2L1t2s0E1B0M1!2X2527261;0e2u1P0F0E2n2I1:1J1L0.1`2+2-0E0J2;1:0C2Q1B2V2X310~2c1d2?2j2`0c120o1:0f1%2Q0q0?030B0B0O2{0Q1,2_0J0U0H0b3s0{0H1t0f32350|342t371{393b3d3f0Q3h013j3l3n3p2.3s3u2g040w3y3A2d3C2V2*013H0f3c1B3e0r3g3i3k3m0$3R2`3T0U0k0{0k3Y2U3B0}3$3F0?3)3+053-3/3N3;3Q2,3S3t0U0z0{0z3~1u403D361N3G0J3a3*3J3.3L3:3P3?4d3^4f0N0{0N4k3141353%454u493O3=3o4A3r4f0L0{0L4G4m424p444r3I3,3K3M4O4c3q3_0S0{0S4X3!1E2 1t2;2!0e272)43014P2:1K1B2~0Q303B3 4?4P572t0F0e0?3k2V3_0H3J5e5g4y4Q4-4f5k0W2y0Q5n4P3@4S3u5k2X3z4n3%0g0{0$0q592W5E4 0h0{0W5K5c4o2@3(0q0{0E0d2Q3l0r1m2,1s4l4?4Z5U0`040D5R5M4!3(5X5;5,2j5.0K0Y5R0}5*5L3$5m015h353_3V470W644b4z5q3U2h5u5w4,4e6g5C040W6p5Q5`1{5G040F5J616o5=5U0E5^6y6r4J4 0J0{0v0v5R6F3E5?0T0F3w5_6G5?5.5~6y6033635f650B5i4f3{4(6c5o5y3_3{5t2p6j6e6l3`1:0M3z6q6~6N5T2j6u2Q0i0V0c0E6M6A2j6Q6S6Y6T5d6$662d3_4h6,7h6.4R7k6h6?6%5x7p4f7l3Y6~7a6t0{4Q6x31704K6D7F7A0?6I046K796s0?7c3W7f711{6W5 7U6b7n6)3u4D7m6@5p6_4D6=2z7*6/4C6{6}6 6p7K01730%76786E7`7S3X7e6y5E6-7$0U4U7)7t6k4B3u4U7.5v8c6^8e897?6o6q7`6u3o0R0Q7Z4 7X846!4J87674f4/8b6d7+8l4/8h7:7v3u8E7y7^7G4 7|75777P6U6B5X5Z0Q5#5%0E5)8z6O5-0{5:857Q5@047 7J8:7M0U8W8+7b6R043x8/8X5{0{0K8{7V7L0{0y967H8=8!8$6Q8(8v6V8-9i8Y8=9b6H0{8`808:829l9304958y580M5b4@564_531t0i4|9H2%2Y0f1?9E0M4`1z5S3%2Q0T0B0q0f0g8#0r6+1l1n1p1r0W6X331G3C2;3%0f0e0T1c2K0F1$0e2d1V0c0{1z9=9@9_2L0U0^0i23040G212n2T9/9S0s0%0i1^0R181a9{1d0c0n0O762J0!1^2~2{0V2K0W0V1d250j0,0A0c2d2)2`0T8!0W0e000f0C0C8s0W1p0F5t001r0i0W2c0,0e0V0W0i0J1a0W3L2l0O0f0O0Q0l0-13aP9+a?0oat0+7!ae0F9*0,am0Ea$ar3*0F0R0n0,arat0cav1maea%192J0Qau0W0q0Jbd0Z0W0uaY0!a.0,ak0Rak0t0-ajalan2La%a.0caC1daIaK5t0JaN2Qa}0W1n0O5$0Ra`a^0/a%2Q0E0eaJ0W0d0Q0f0V3m0V0CbXak1hb$0Wa.bs0Qb.010C1Qaka02D1Z1#0E0Z1E3C1A0PbB0W0n751Jc11c0,c40VbC132)b)0~251c0A04aybR1wbL0e0x2yb51q2Ucw1R04ccag9F0!3C9Q0%0)0+04.

Crédits⚓︎

Franck Chambon