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.1280137xh15-s3:/SC né0eI.]RT2;cfaow4)(+,_u[qb=v8imFtP69pdrgylk050!0s0V0C0S0(0i0o0A0(0C0i0i0P010V0S0Z010406050i0L0T0T0C0#0%040m0D0(0L0}0D0p0o020C0T0Z0z0o0w0s170#0N0L0s0i050l1416181a120Z04051F1y1I0l1F120!0S0Q0=0@0_0{0@0p0$0L0C0$0s0h0Z0%0V0e1h0o0e0S0$0e0(1.0e0V10050-0O0(0s1R0^0`011-1/1;1/0V1`1|1^0V0#1G1)0=1d0i0Z0C0p0{0y011~1T010B0/0s0p1l0s1^2g2i2n202q1|2t0T2v040b0o0W0#0D0Z0D0i0S1g1i0+2e0#0#0s0A2Q1y2x0p1G0l1)2$2a2c2b1_0!2z1U0S0p2s2N1^1O1Q0?1 2:2=0p0D2_1^0Z2V1G2!2$36132h1i2{2o2 0#170(1^0C1,2V0B0{030K0K0A300s1;2~0D0h0r0h0f100o0f1y0C373a11392y3c203e3g3i3k0s3m013o3q3s3u2?3x0h2l040o0y3E3G2i3I2!2/013N0C3h1G3j0e3l3n3p3r0+3X2 3Z0j3B0j3)2Z3H123-3L0{3:3=053@3_3T3{3W2;3Y3y0F3B0F441z463J3b1S3M0D3f3;3P3^3R3`3V3}4j3 3y0g3B0g4p36473a3.4b4z4f3U3|3t4F3w3y0X3B0X4L4r484u4a4w3O3?3Q3S4T4i3v3Z0c3B0c4$3+4N3K4)3/4+4y4-4A4/4h4E4=3y0R3B0R4`2#4|4t2|4 4x4c4e4B4g4D4V570h0Y3B0Y5c3,4O495h4,4d4.4C4U3~4X3z0r100f0r5u5e4P505j5B5m5D4W3Z0f3A045V5L4s5N5i4R5l4:564k3z3#0f3(0l3F454{5!5x4Q524S555o5+0f415X435:3*5d5@4~5_5A535C4;5~4m5X4o635=654(5g685k545n5E5U4I5X4K6h4q5?6k3d5O5%6o5S5p0f4Z5X4#6v381L341y2_2)0!2c2.5x4U2^1P1G330s353H6i1G4U6!2y0S0!0{3p2!5U3P6+6-6p5T3y3A0o2D0s6?6D5~1^6h6y200)100+0B6$665g0E3B79734a0B102V0A0e0s0#7k0s7e5w4~0 040H7q4}6l100:0V7w5f2o7t0J6$0o7a3d100d7C3.7t0G0k6$126w2#5!6=016.3a3Z3#5A7X5|6q3y2l6{2u6~6c4G3!715;7f017c3$0o7|7N5x0i0!1001837S7N7(0K6/3y607%6,7Y6@5p417-2E7/5*7;8b727r5g803B7|0o0n0,0V1}0B1h2X0S1+2V0p0Q0D0S1}0x0#1v0o2O0o0d0o1w0V0o0!2i0;7A0J8R8T0U3;0i1}2O2 0p857U6)1i87890h6e8c8k5}7;4m8i6}8e6 8{7?8/3.8r7{7|2J0q3r0p1O2Q0o0k8P9e0o2;0V8Z7A9h1;0i8T0,0o2a0S0q1}2s0o4w0!2V0=2K0S0_2i7B8.7T383-8;7!4H6;8d7)6^0h4I8}8_7*9T927J20958t2I2N0V9a9c8C1i9f0A8w8y8A9d8E8G8I8U0L9s0%0Z1}0O0D1d9v8,9I869Q889N0h6G8^8 7:5F4Z9Vae8lag9Z7^9$8t83018-9K4O9M2i4?9P9W9S4@ai9R5p4@2$3F9J6#9La88=594-87905F59aC8f5+aN3)9%9!0{75040S788.7I7^0p0O7z2s7~7s107v8.aZ3/7z9pa:5g7P7Ha^0D100P0Pa 7^0T0S105Ka@7^7t7Ra6bbauaLaa5raOa8aQ3Z5raTbn3ybkaX9%8ta^a#2V0V0L0#a536a*8p2o0)0A108$0:7pbfat6*biaw6_5Hblaz6E5Hbqaf5UbUbu7}a+100Tb5bG20b104b4a)a^a,a.bDaJb-0{7ta?bP7D3Ma`9Hb 7O100Gb,7x2ob/0l0lc8c00{b7105/4Ma76?8=5Vayaj8`5FcobZak5U5Wb%bFc97410a%ce4Pc2a|7E100McHc104b+bgcAb|100vcE5xb/b3cU677LcLcR04beckcP8:bR0p5U7$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/020(0V0zcY7y047MdEa;c%dc3+7Wc,5U8@c:bmc=3z8|dmdj7;0f8@c|c}ds5xd0bAbCdS7K047j7l7n7ldHb}dH0pdzc45x7tdDe9cZcNd}b.100Iegcgb85Xe4100k0v7GdLb{a_dUeo04c7bOddc+dfbS3z6sadd/cs9Ud.aUd:eGd?b(eudubMexc(4rdAavc-6_acd)c_d:aheLbr3zacePbvbx7id1d|etcQeve07m7oexb~eBcF047Aex0MeVd!b)efdWa}cSesdxf7dVedfaeydZ7V0l6(1J6M0l6O1y0V6Qfr2,2%0C1{6Z6N6W1E935x2V0T0K0B0C0)0s0K0e601q1s1u1w9e791L3I1F0a0o0t0(0o170p1u0.8T1|0;056(bzd21y6(0o0uf^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

.1280137w4xh)1(5-,_s3uE:/SC bn=éve08imFtPT69p2drg;ylckfao050O0B0H0X0E0T0n0v0U0T0X0n0n0y010H0E0M010406050n0p0F0F0X0P0S040t0Y0T0p0?0Y0x050s0}0 11130{0M04051j1c1m0s1j0{0O0E0A0+0-0/0;0-0x0Q0p0X0Q0B0k0M0S0H0f1a0v0f0E0Q0f0T1O0f0H0_050$0w0T0B1v0.0:011N1P1R1P0H1X1Z1V0H0P1k1J0+160n0M0X0x0;0N011#1x010W0(0B0x0X0F0B1V1`1|211%241Z27290_0a0v0I0P0Y0M0Y0n0E190x0v0!1^0P0P0B0U2u1c2c0x1k0s1J2H1;1?1=1W0O2e1y0E0x262r1V1s1u0,1$2R2T0x0Y2X1V0M2A1k2F2H2.0|1{2v2Z222%0P100T1V0X1M2A0W0;030m0m0U2(0B1R2$0Y0k0h3c0_0v0h1c0X2/2=0`2;2d2@1%2_2{2}2 0B3101333537392U3c0k1 040v0N3i3k1|3m2F2Q013r0X2|1k2~0f303234360!3B2%3D0o3f0o3J2E3l0{3N3p0;3Q3S053U3W3x3Y3A2S3C3d0d3f0d3+1d3-3n2?1w3q0Y2`3R3t3V3v3X3z3!3}3$3d0j3f0j432.3.2=3O3=4d3_3y3Z384j3b3d0K3f0K4p453/483;4a3s3T3u3w4x3|3a3D0b3f0b4G3L4r3o4J3P4L4c4N4e4P3{4i4S3d0D3f0D4X2G4Z472!4$4b3?3^4f3`4h4z4.0k0L3f0L4?3M4s3:4{4M3@4O4g4y3#4B3c0C0_0h0C584^4t4%4}5f505h4A3D0h0h5m3h0s3j3,4Y465r4|4v4 4Q4-3~3c3F0h3I5D3K4@5H5b4u4)4w4,525O0h3(045(5p5W4#5Y5e4*5g4R5%405*425T5F5V4I4`5/4~4+515i5y4m5*4o5{445G5~2^5s5K625w530h4D5*4F694q5-5 6e5Z5L5#643d0h4U5*4W6n4H5a5.6r5:5!635x6w4:5*4=6B6b6D6q5J6s6g5?4k3c555*576O5}6Q6d6S6G6t6I530N5l046.5,6c496)615=5N6W0N5A6:5C5E6a6$4!6R5d6_5v6V5j0N3F7b581n2,1c2X2K0O1?2P5b4y2W1t1k2+0B2-3l5|1k4y7u2d0E0O0;342F5y3t7B7D6,5%202i0B7J6h7L2H5E6?0;0V0_0!0W7w6p220c3f7!7U3P0W0_0B0n0H0m1{0E0P7)6%1%0^040i7^742^0_1b727z4_227{0r7w0v7#3q0w0_2S0H7~857`0_0g898b0;0Y0_0k020Q0H0R8m7*0x8d040w0Y168h3O877w0{835H7I017E2=3D3F5e8L6u6J3E7M287O8M7K6|1V5{7*7%3G0v8+8E5b0n0O0_018=8H8E8S0m7F3d5)8R7C8Z7Q6W3(0v7N7P793%8$7T7_0;8/3f8+0v0u0#0H1!0W1a2C0E1L2A0x0A0Y0E1!0J0P0p1!2s940v7.0H0v7=0P0l0v0G3R0n9z2S1a8@8J3N8_8{0k5^8~966{5j40948X9Y5$6W9W8%9b019d8*8+2n0z360x1s2u0r9B9D0v0p2v260?0B0P9F2r2t0E0W0v0Y0p940p0T9Q2:9S8 8N1|3D669X90974l8W299(6v0kan9,7 1%9/9f2m2r0H9@9_9o0x9{0-0v0A3R0B0pa42A0Hab0P0x0z1!9}2x0H0S0M1!8B16aX826o9R4s9T8O4C7Haj8!5j4D9$atap9Z3D6k3+7*aB9f0q0e0B0F0M1Z0v88838Iaha/a@9U6yao8T534Ua{8Ybl5Obj5Tbe7vai7J9U6Lbka^3D4:boau8Ubzay8i9c8:9:0v8s8ubO0RbQ9C7/7;0%0P0i0d8lbd8^bha;54a?bF5355bEa}9)5j6Yb19-b38+9w9yagbvbgbxb(5nb*b/avc1b.bq6Wc17S843Ob^bN8tbRcfbS9DbV7?0i0jb!a-bf7Ab%al6w6~bA915j5zasbpbBcu99cb8.bLaC9K0)0Bb|3L8Kcs0x5y8Q2~8_cxcRcAb+5%8QbIcccH9fbQc)cfbT7:9G0i0Cco45a.crb ct3c8}cTa@cV6w9395c38U5(cE8n9.c%b_9xcLb#c?2va:c_0h9Wc|cYc89#d1c7cy9+3jbucNbw8Z9U0handjd26i4mc6cC3cax9aazbK9e8+8=01cM2GcOc^cQ6wb0dzdo5ya`dndE6jcEaCd67W041$a38g838a8x818w9-8p04bQ0yd=dI010F0E0_5od.d67{0l8-4#0n6~00a07/9~a00xa2a42q2s0?a9abad0T00dOcbdfdS3cbjdVd!bndZc~eud$9fd(8e7Ze2d:04a,3ld/d?0_0yd`eH9-d~e0e64`8GdccqdecP5ybzeweA0hbDezaq3cbH3jaCd%7*d)aSaQeK3LeMd|0V0U0_b`dbcpb}c@dvc0b=e(e-0hb-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=eZ0ves8PcSg1c}f;1 f:fe3Ec!e:fSfofZfV0#e_fY5X7-bU9Gf{0;7{7}dd4tfrfnd6d@0kgk4#fy5Sg05b7{c;5G8J0s7y7f7t7h7q1c0H7kgQ2N2I0X1YgN0s7i8I0!0$0(0n04.
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

.1280137w4h)1(+5-_s3u:/S[ bn=ve08imL.tP]69p2drg;ylckfao050M0y0F0V0B0R0m0t0S0R0V0m0m0w010F0B0K010406050m0o0C0C0V0N0Q040r0W0R0o0;0W0v050q0{0}0 110_0K04051h1a1k0q1h0_0M0B0x0)0+0-0/0+0v0O0o0V0O0y0k0K0Q0F0e180t0e0B0O0e0R1M0e0F0@050!0u0R0y1t0,0.011L1N1P1N0F1V1X1T0F0N1i1H0)140m0K0V0v0/0L011Z1v010U0$0y0v0V0C0y1T1^1`1 1#221X25270@0a0t0G0N0W0K0W0m0B170v0t0Y1?0N0N0y0S2s1a2a0v1i0q1H2F1/1;1:1U0M2c1w0B0v242p1T1q1s0*1!2P2R0v0W2V1T0K2y1i2D2F2,0`1_2t2X202#0N0~0R1T0V1K2y0U0/030l0l0S2$0y1P2!0W0k0L0k0g0@0g1a0V2-2:0^2/2b2=1#2@2_2{2}0y2 01313335372S3a3a0@0L3g3i1`3k2D2O013p0V2`1i2|0e2~3032340Y3z2#3B0n0@0n3F2C3j0_3J3n0/3M3O053Q3S3v3U3y2Q3A3b0d0@0d3%1b3)3l2;1u3o0W2^3N3r3R3t3T3x3W3_3Y3b0j0@0j3 2,3*2:3K3.493=3w3V364f393b0I0@0I4l413+443-463q3P3s3u4t3^383B0b0@0b4C3H4n3m4F3L4H484J4a4L3@4e4O3b0A0@0A4T2E4V432Y4Y473/3;4b3?4d4v4*0k0J0@0J4/2F2)0y2F2V2I0M1;2N3,014u2U1r1i562+3j3(3H054u5l2b0B0M0/322D3B3d4J5t5v4}3X4x3c1~2g0y5C4u5E5y1T0q3h423K0T0@0Y0U5n2E5R5e0c0@0t5X5r4=2?0U0@0R181z0y0o0N5(5Z4X0?040h5@4E4?0v0@1,0y0V0o5}4o5e5`0p5(5%5~2?0u5-0B0m0F664W4?5`0f6b5^4?0W0@0k020O0F0P6p6d3o6f042Q6j405o6A0/695(0_6G5Y3J5B015w2:3B1}5A5u6R5D4w6U5H265J6Y5L6!3b6V3%6I015#040t6?5%6N5)3K0m0M0@016 6L6k2t6Q6S1`3Z3r746Z4 3!0t5I5K4N3`0k3!2F5Q6/6|5$6@0D2|0U182A0B1J2y0v0x0W0B1Y0+0t5.1y0o5;0N2u1Y6264716_5R795x3{786X4(4~7h3|7d6%7f4)7Y5O7l674X7n6=6@6 017O2.6P7V0l7S0k4i6W7$7X4g7{6$277~5M4h7)7.6?6q205T6D5W6_6c7+5 610V1W63658f8a1#6s040w0w6z8h205`0s0H6a6_6M7?4o7R6T4y7U846+0k4z7!836)7g804z7k886@896/8c2y0F5=198o6/0C0B0@0z7=5m7@5C7`4Q7}8Q7%804Q8O6(7W850k8?3F8W8p0/8c360m0y723K6K8C9a8G764+8J8^7 5F4,8|8K4 4,8U8W936/60047M8n8E6l208r0E9a5e9v2o0K9E5_0@0h6o9d7P8:6Y7`518@8~8L519n9j8 9T929s8X8w1#8Z0Z8$8v9A1#8*3e9.5*8q0@0i9?4p5-5/7H5=9J6m9La12?8j8l7N9P9)6J0@9N4m5@0q5q1l2*1a591a0F5bam2L2G8k1X585i6M0Y0!0$0m04.
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

.1280137w4xh)1(+5-,_s3u:/SC bqn=îèéve08im.tPN69p2drg;ylckfao050R0E0K0!0H0W0o0v0X0W0!0o0o0z010K0H0P010406050o0q0I0I0!0S0V040t0#0W0q0_0#0y050s101214160~0P04051m1f1p0s1m0~0R0H0D0.0:0=0@0:0y0T0q0!0T0E0l0P0V0K0f1d0v0f0H0T0f0W1R0f0K0|050)0w0W0E1y0;0?011Q1S1U1S0K1!1$1Y0K0S1n1M0.190o0P0!0y0@0Q011(1A010Z0+0E0y0!0I0E1Y1}1 241*271$2a2c0|0a0v0L0S0#0P0#0o0H1c0y0v0%1{0S0S0E0X2x1f2f0y1n0s1M2K1@1_1^1Z0R2h1B0H0y292u1Y1v1x0/1)2U2W0y0#2!1Y0P2D1n2I2K2;0 1~2y2$252*0S130W1Y0!1P2D0Z0@030n0n0X2+0E1U2)0#0l0p0l0h0|0h1f0!2=2^0}2@2g2`1*2|2~30320E340136383a3c2X3f0l22040Q3l3n1 3p2I2T013u0!2 1n310f333537390%3E2*3G0p0|0p3L2H3o0~3P3s0@3S3U053W3Y3A3!3D2V3F3g0d0|0d3-1g3/3q2_1z3t0#2}3T3w3X3y3Z3C3$3 3(3g0k0|0k452;3:2^3Q3@4f3{3B3#3b4l3e3g0N0|0N4r473;4a3?4c3v3V3x3z4z3~3d3G0b0|0b4I3N4t3r4L3R4N4e4P4g4R3}4k4U3g0G0|0G4Z2J4#492%4(4d3^3`4h3|4j4B4:0l0O0|0O4^2K2.0E2K2!2N0R1_2S3=014A2Z1w1n5c2:3o3.3N054A5r2g0H0R0@372I3G3i4P5z5B533%4D3h232l0E5I4A5K5E1Y0s3m483Q0Y0|0%0Z5t2J5X5k0c0|0v5%5x4{2{0Z0|2D0P0E0!0K5.5)4%0{040i5|4K4|0y0|1e465u63255 0r5.5-6a3t0w0|2V5{685(6g0@5 0m6e5}640|0K0e6l2?6o016c6s6A0y6i040o1@624u5k5 0g6D6L4%0#0|0l020T0K0U6P4$646G6I0S6Z5:1*6C6m3p6-5X5H015C2^3G3I3_0v6;4.54403H5N2b5P6=5J4C6^5U5W6A5+040v7d5-6/6A0o0R0|017l5.0~7g4u6|0n5D3g3*5G5A745R767u712c5Q4T6 7v3-7h7j7c7e0r1~0S2b0v0y0r2z1%0K0V5^0v290_0E0S0J0v0M0#0I0w2D7U0v0Z0#0H0-0x0q1%0W001O2D390P0H7`310X0f0!0A2W7/0X140!2F0B2D0o0J7n6K5y7x6?1 3G427w7E4/6 427R728r6~4m0l8p7I6Q4|7i5,7M7O7Q6w0K7T2A7W7Y6%7(0u853 898b8d8f0v7^7`7|2y0R7=0K0v0S0C0P0C0K7$8h6-7o6z7q8l7s6@4n3w7r7z554o8v7D7y7F8z4o2K798D258F7L7d7l018i7p8k5I7t0l4F8q958s8z4F93736}5S4E789e6f9b1*5Z040H5$6-9B6!2{666)3Q6S040z0z9N5k0I0H0|0F9T5~0|6d8?8j2y7r9m4W9p9w7A0l4W9u8x9x9:9z7e9`9J6*0@9E2D0K0q0S672;9|3Q0o5F00009i8^9k749m4=9-75554=9=9q8y5Lah3L9`6t259E3b0o0E9Z4|6,4s9(6{8`9m57ai906 57am9.55aHar9{7dat9D5?0(a2a43oa65k65048Kaz259P0ja)3taV5^5`aD6M0|619j9}3R9M9IaT0@9P0la-0@9V3ja=9!046ra}6E6v6xb6aA0|6O9%6/0s5w1q2/1f5f1f0K5hbq2Q2L0!1#5dbo5o7o0%0)0+0o04.

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

.1280137w4h)1(+5-_`s3u:/S bqn=êve08imtP69p2drgylckUfao050L0A0F0U0D0P0n0t0Q0P0U0n0n0x010F0D0J010406050n0p0E0E0U0M0O040s0V0P0p0:0V0w050r0`0|0~100^0J04051g191j0r1g0^0L0D0z0(0*0,0.0*0w0N0p0U0N0A0k0J0O0F0e170t0e0D0N0e0P1L0e0F0?050Z0u0P0A1s0+0-011K1M1O1M0F1U1W1S0F0M1h1G0(130n0J0U0w0.0K011Y1u010T0#0A0w0U0E0A1S1@1_1~1!211W24260?0a0t0G0M0V0J0V0n0D160w0t0X1=0M0M0A0Q2r19290w1h0r1G2E1.1:1/1T0L2b1v0D0w232o1S1p1r0)1Z2O2Q0w0V2U1S0J2x1h2C2E2+0_1^2s2W1 2!0M0}0P1S0U1J2x0T0.030l0l0Q2#0A1O2Z0V0k0d0k0g0?0t0g190U2,2/0@2.2a2;1!2?2^2`2|0A2~01303234362R390k1|040t0K3g3i1_3k2C2N013p0U2_1h2{0e2}2 31330X3z2!3B0o3d0o3H2B3j0^3L3n0.3O3Q053S3U3v3W3y2P3A3a0d3d0d3)1a3+3l2:1t3o0V2@3P3r3T3t3V3x3Y3{3!3a0j3d0j412+3,2/3M3:4b3@3w3X354h383a0H3d0H4n433-463/483q3R3s3u4v3`373B0b3d0b4E3J4p3m4H3N4J4a4L4c4N3_4g4Q3a0C3d0C4V2D4X452X4!493;3?4d3^4f4x4,0k0I3d0I4;3K4q3.4_4K3=4M4e4w3Z4z3b0B0?0g0B564?4r4#4{5d4~5f4y3B0g3c045x5n445p4`4t4}4O4+3|3b3D0g3G0r3h3*4W5C594s4%4u4*505J0g3$5z3(5O3I4=5S4Z5U5c4(5e4P5Z3~5z405(5Q5*4G4^5-4|4)4 5g5w4k5z4m5_425R5|2=5q5F605u510g4B5z4D672-1m2)192U2H0L1:2M594w2T1q1h2(0A2*3j5`1h4w6C2a0D0L0.312C5w3r6J6L615v3a3c0t2f0A6R6f5Z1S5_6a1!0R0?0X0T6E5+4^0c3d6.6(3/0T0?0F0V6{6?584Z0=040h6~4Y5}0?18682D6/1 710f0q6E0^796H2s6Q016M2/3B3D5c7l5X623a1|6W256Y7m6S517q6%6 6:3d0t7I744@1 0n0L0?017Q0S2Q0t0T172z0D1I0F351W0t0v0p1X7f7i7h2-3L7s0l6N3a5#7r6K7A6!4i0k3$7x266Z5;7|7@5(7-6D7/7_7n1_3B5?7^815I7|3~7 7z7t6T396$5P6@017N7H7I0k0t0m6{6{0h0B0f0m0t2x0w0z0V0D1X0m000B000m7g7K0t7:7=0k648e7`825h4k8j8f5Y7|8W7E757M7O3E7I0t8v8x6|0V0h0g8C8E238H8J8w008A0t0i0t8B8O8Q7i5C8T7o4A6P897B5J4B8$8Y8g5h6i3)8q8s8/8u8w8y8^0K8{8F8~8K9192948B930t9C950f0f977,8R9b8b3a4S4L7:7{5h4S9j8l519R9o7F8-8t8;0t0Y0Q0t0`0M0t7$0E0y260t2(2P0Q0;0A987.4q9O0w3B4.9S9f9Ua31}6X8%7u0ka43H863J9a9f8U53a5ab8m539X9g7|al9#8,1!9q8:6W9*0n0F0t0p2s230:0A9/2n2p0:6-9M99886R8U5l9ean6g5jaqa76U5j2E8p9$aw8.ay7Q019~87a0aj9c3b5y8X9Y5Z6Vaa9k8(5h5x8o3kaPa:aRa=5MaUa}acb7aY8Z5w7D3hay7b6)0?0DaN2+0tbi3/776Ebo8q0V0?0x0xbsbp010E0D0?5mb3av0.717+4o9Na;9P3b7@2{9Tbd6U7~a|a_7|5!b1aybh8q6*042x0F0p0M78bnbA0n5y8M00a.ahaQ7AaS8dbRa6bT3b8ibWara 8d5(b$a(0.b(350n9}bG7L1!bJb^7ab`8aa26U8Wb~aV5Z8#c3aZ3b8*bgb#7J8q0w0?0E6|blbzbubwcHc93N6`8@8R597173cf4rbr7ibtcLbv040kcKbHbBbD5zcP700?0fcj7j8SbNcn3b9ncqb98m6ha97ycrbY9nc7czcXc%b(b*b,b.3jd4cg0.b;0?91b@cWbAcZ0ic$dccM04cEaMdm3Mdkds59de04009Fdhb/cI04dldicBcDcFbmdadj0?dFdCcLdx009Kc/196G1k6o0r6q190F6sd#2K2F0U1V6B6p6y7h0X0Z0#0n04.

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

.128013.98887xh1ç5-s3:/SC nA!é0e.]RT2;cfaoàw4)D(,_u[qb=èv8imFtP69pdrgylk050(0v0Z0E0W0,0j0p0C0,0E0j0j0S010Z0W0%010406050j0O0X0X0E0)0+040n0F0,0O110F0q0p020E0X0%0B0p0y0v1b0)0Q0O0v0j050m181a1c1e160%04051J1C1M0m1J160(0W0U0_0{0}0 0{0q0*0O0E0*0v0i0%0+0Z0e1l0p0e0W0*0e0,1=0e0Z14050;0R0,0v1V0|0~011;1?1^1?0Z1~201|0Z0)1K1-0_1h0j0%0E0q0 0A01221X010D0?0v0q1p0v1|2k2m2r242u202x0X2z040a0p0!0)0F0%0F0j0W1k1m0/2i0)0)0v0C2U1C2B0q1K0m1-2*2e2g2f1}0(2D1Y0W0q2w2R1|1S1U0`232@2_0q0F2}1|0%2Z1K2(2*3a172l1m2 2s330)1b0,1|0E1:2Z0D0 030N0N0C340v1^320F0i0h0i0f140p0f1C0E3b3e153d2C3g243i3k3m3o0v3q013s3u3w3y2`3B0i2p040p0A3I3K2m3M2(2?013R0E3l1K3n0e3p3r3t3v0/3#333%0k3F0k3-2%3L163;3P0 3@3_053{3}3X3 3!2^3$3C0I3F0I481D4a3N3f1W3Q0F3j3^3T3|3V3~3Z414n433C0h3F0h4t3a4b3e3=4f4D4j3Y403x4J3A3C0#3F0#4P4v4c4y4e4A3S3`3U3W4X4m3z3%0c3F0c4*3/4R3O4-3?4/4C4;4E4?4l4I4_3C0V3F0V4~2)504x30534B4g4i4F4k4H4Z5b0i0$3F0$5g3:4S4d5l4:4h4=4G4Y424#3D0u140f0u5y1N381C2}2-0(2g2=5B4Y2|1T1K370v393L493/054Y5)2C0W0(0 3t2(3%3E4;5;5?5r5I5_2q2H0v5}5H4!602*3J4w3=0-140/0D5+2)6a5B0H3F6g5/5j3h0D141A0Z0N2l3y0(2O2I6m6i5213040L6A4,5k0q140X0F0Z6G5A6C140J0l6m164u5,3;5|015@3e3%3)5E6Z595s4o3(612y644^6-6(0m696H2s6k3*0p6~6O515k0j0(1401760K0t0Z0v3j4n0p2S0p6L0Z0p6s0p0O1m6v2^6x0F2I76016U701m6*0N5^3C455{5=6!5~667B6/2I6;5a6-7C3-6V3c6Y7E6#2m3%4q7D7L6,4K0i4q0p627Z5 4p1|6^6}6 6`246c040W6f6W2)0p6B6I0R142G7w3=6D6F7`6n4T6K6M825B6D0J6m7|7;0 0F14020,0Z0B8f7}2s0X0W143,868q246D6T867Q5*7S5}7A3B3T7y655t4M7(6:7F8K6-4M687/6~8V8x0 7?2Z0Z0O0)0q8p8h010-0C140z0)1z7v8w8E7F8G4%7Y8P6=7#4%8N7K8|7M8~7-3J8V8g6P5k7?3x0j0v8b6Q048A4Q827y8G4{8{6+7+0i4{9063927!5J9n3-97978X8+147^8)993h896N8?9H8y140P9f5k8s145O9L712s6D0x9G9W248j040s0S9!6o3Q9J9Q9X9O9/9$140i9=0 9S043H9V9,0 9Y9i4v9~0p9l6$5c8I7T7G5t5d9t7*7H0i5d8T9Aak989#8Y148!8$8(86am9 8+8-040Y3^9d8=7R4Sa67V3C5v9oab6-5vae9v9qaI9zal9C9b0@9ea48c14a24 9kaa8G5Na9af5ta)aN9paga)ajal9B8*8Z0:ar9+88046s6u3^7p6yaWaDan01849_3?9.aX9g9Pbc9R8t9|b98zb99%9^bf8rbh9}b5av9Y8e8B6A0m5.5Q5(5S5#1C0Z5VbE2:2+0E1 bB0m5T1I875B2Z0X0N0D0E0-0v0N0e7C1u1w1y1A0pa!6h1P3M0/0;0?0^5B337a0p0(0t0%1^0t2z0p2P2w8i0%2w144b191w1e0r1j2Z2X2Z2#0W1/2Q0}0WbL2%c81Gb.1T3=1Z1#1%1)1+1-1/261@1_1{bQ522F2w2y140!1,1.as3c5%6n3.6hbz8@7U0q0i0#3Da*aO66cY3Ea.aK43c%2q575G8}3Ac,8TaT6d3Vb96|7|bo3Q6qa~0j6t7o0q7q6zc}a01485bsa}7hbj6Rb+3Ma4aFcWcY6(3n8Jc:cX6.c)8Qc+drc.5qdtc;6.c?8*0j3)01787a7c2_7e0W7g6M7jd17l7nb1d4b37ubwdia%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%0S9*fB8*fD8aew9;epbmfHbqde049ZfSef010F6|2m0(fN9-d0d2dSd5f9d^fberepfU9KfK9:04beg0249{brfe83aZbl9@f!5Mf$0xbv9j8wby3w2*cPbC0U3M1Jb$1c1y1l0^b(0p0{b_0v0O0d0W0T2I0p2l0)11210(0O7|5.f.1C5.0p6F5.a d3f^0L7h0P0f0l3DgggRgl0J7(219d0)3n0t0U3^0Ob~7j1mcKcy1mgx7f5-glg!0u0x0pfQdM0Z0Pg(g*0/3*7kg=g@0t0p0GgOgle/aWgS0Lhg1i0E2UgH1c1A9d0O9d0J0w1Ndhb/0=0@cq2~520E0(6L0q2Tch1m0H1chO1!c61L3=hLhNhP1l0i110Z2c04gs1xe:1Q1L040b0p0o0:b^0j1h1jhQhj0p0R0|gL213v0%0Wi20p010j1^0C1A2q0L2e2m0C0eb)2w0p0Dg:0q0g0=0jg,0q007k2l0^3V2u0C0Eic0M7(0Fhz0p0U7b2O0q0^b|iH0;0)2=7m210X791.2WiOiy0DiAiC210EiJ0Cgyb)7p0Wic0jhCb-6VbO5S0:hG0j04.

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

.1280137w4h)1(+5-,_s3u:/SC qbn=Aèéve0im.tPNRz6p2dr;gylckfao050Q0D0I0Z0F0V0n0u0W0V0Z0n0n0y010I0F0O010406050n0p0G0G0Z0R0U040s0!0V0p0^0!0x0u020Z0G0O0S0u0L0D120R0v0p0D0n050r0 1113150}0O04051A1t1D0r1A0}0Q0F0C0-0/0;0?0/0x0T0p0Z0T0D0k0O0U0I0e1c0u0e0F0T0e0V1)0e0I0{050(0w0V0D1M0:0=011(1*1,1*0I1=1@1:0I0R1B1!0-180n0O0Z0x0?0P011_1O010Y0*0D0x1g0D1:2b2d2i1{2l1@2o0G2q040a0u0J0R0!0O0!0n0F1b1d0$290R0R0D0W2L1t2s0x1B0r1!2X2527261;0Q2u1P0F0x2n2I1:1J1L0.1`2+2-0x0!2;1:0O2Q1B2V2X310~2c1d2?2j2`0R120V1:0Z1%2Q0Y0?030m0m0W2{0D1,2_0!0k0g0E3s0{0g1t0Z32350|342t371{393b3d3f0D3h013j3l3n3p2.3s3u2g040P3y3A2d3C2V2*013H0Z3c1B3e0e3g3i3k3m0$3R2`3T0k0o0{0o3Y2U3B0}3$3F0?3)3+053-3/3N3;3Q2,3S3t0k0d0{0d3~1u403D361N3G0!3a3*3J3.3L3:3P3?4d3^4f0j0{0j4k3141353%454u493O3=3o4A3r4f0N0{0N4G4m424p444r3I3,3K3M4O4c3q3_0b0{0b4X3!1E2 1t2;2!0Q272)43014P2:1K1B2~0D303B3 4?4P572t0F0Q0?3k2V3_0g3J5e5g4y4Q4-4f5k0u2y0D5n4P3@4S3u5k2X3z4n3%0X0{0$0Y592W5E4 0c0{0u5K5c4o2@3(0Y0{0x0w2Q3l0e1m2,1s4l4?4Z5U0`040h5R5M4!3(5X5;5,2j5.0f0q5R0}5*5L3$5m015h353_3V470u644b4z5q3U2h5u5w4,4e6g5C040u6p5Q5`1{5G040F5J616o5=5U0x5^6y6r4J4 0!0{0y0y5R6F3E5?0G0F3w5_6G5?5.5~6y6033635f650m5i4f3{4(6c5o5y3_3{5t2p6j6e6l3`1:0r3z6q6~6N5T2j6u2Q0I0p0R0x6M6A2j6Q6S6Y6T5d6$662d3_4h6,7h6.4R7k6h6?6%5x7p4f7l3Y6~7a6t0{4Q6x31704K6D7F7A0?6I046K796s0?7c3W7f711{6W5 7U6b7n6)3u4D7m6@5p6_4D6=2z7*6/4C6{6}6 6p7K01730%76786E7`7S3X7e6y5E6-7$0k4U7)7t6k4B3u4U7.5v8c6^8e897?6o6q7`6u3o0n0D7Z4 7X846!4J87674f4/8b6d7+8l4/8h7:7v3u8E7y7^7G4 7|75777P6U6B5X5Z0D5#5%0x5)8z6O5-0{5:857Q5@047 7J8:7M0k8W8+7b6R043x8/8X5{0{0f8{7V7L0{0i967H8=8!8$6Q8(8v6V8-9i8Y8=9b6H0{8`808:829l9304958y580r5b4@564_531t0I4|9H2%2Y0Z1?9E0r4`1z5S3%2Q0G0m0Y0Z0X8#0e6+1l1n1p1r0u6X331G3C2;3%0Z0Q0G1c2K0F1$0Q2d1V0R0{1z9=9@9_2L0k0^0I23040z212n2T9/9S0t0%0I1^0n181a9{1d0R0B0W762J0C1^2~2{0p2K0u0p1d250A0,0T0R2d2)2`0G8!0u0Q000Z0O0O8s0u1p0F5t001r0I0u2c0,0Q0p0u0I0!1a0u3L2l0W0Z0W0D0l0-13aP9+a?0Vat0+7!ae0F9*0,am0xa$ar3*0F0n0B0,arat0Rav1maea%192J0Dau0u0Y0!bd0H0u0saY0Ca.0,ak0nak0M0-ajalan2La%a.0RaC1daIaK5t0!aN2Qa}0u1n0W5$0na`a^0/a%2Q0x0QaJ0u0w0D0Z0p3m0p0ObXak1hb$0ua.bs0Db.010O1Qaka02D1Z1#0x0H1E3C1A0KbB0u0B751Jc11c0,c40pbC132)b)0~251c0T04aybR1wbL0Q0U2yb51q2Ucw1R04ccag9F0C3C9Q0%0)0+04.

Crédits⚓︎

Franck Chambon