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

.128013.128073f06S:d=F4yr./oTxpg2mcb1w9R37Cve[ l,8+P5)ti]kné;Iua(_shq050h0G0Q0Z0R0J0$0I0w0J0Z0$0$0i010Q0R0s010406050$0Y0v0v0Z0m0l040f0p0J0Y0|0p0U0I020Z0v0s0W0I0B0G160m0(0Y0G0$050o13151719110s04051E1x1H0o1E110h0R0F0;0?0^0`0%0R0t0%0J1V0%0Q0 050,0x0J0G1Q0@0_011U1W1Y1W0Q1(1*1$0Q0m1F0Q0%0;1c0$0s0Z0U0`0u011,1S010c0.0G0U1k0G1$2224291.2c1*2f0v2h040a0I0N0m0p0s0p0$0R1f1h0*200m0m0G0w2C1x2j0U1F0o1~2O1{1}1|1%0h2l0`1Y0U2e2z1$1N1P0=1-2Y0R2!0U0p2(1$0s2H1F2M2O2_12231h2*2a2/0m160J0 0I0y2L2}102|2k2 1.3133350u38243a2M2X013f0Z34040I0C3j2N113m3d0`3p3r0I0k3v3l2}3n3B350O3F3x3H3z3o0p323q350e3M3b2~1R3e3R3g3s0D3W3y3Z3A3#3T3s0L3)3O3+3Q3S3C0A3;3c3?3J040y0d3{3Y2+3@3$0y371y393N3|443~0y3i493k4b43303-3r0y3u4h3w3X3I4m0 0y3E4q3G4c4l3^4v3L4y4j4t4C3 3V4y1I2@1x2(2R0h1}2W3P0w2:2r0)1O1F2?0G2^393F054V0*4%4A1.0T0 0*0c4)3*440z354@3=4d0c0 2H0w0%0G0m520G4|4.0`0~040!584k3e0 0/0Q5e3n5b0K3F0I4s3P0U0 0r5k3P5b0P0g423n4`3s0I5E5v3?0$0h0 021t0p0Q0W5L0Y5N5P5M5O5A3P5I355E0I0E0+0Q1+0c1g2J0R1g0I2H0U0F0p0R1+0q0m1u0I2A0I0r0I1v0Q0I0h240:5i0K60620j3q0$1+2A2/0U5W5H5J5D5E2v0V4V0U1N2C0I0g5~6t0I2-0Q685i6w1Y0$620+0I1{0R0V1+2e0I3R0h2H0;2w0R0^245j4F5q6j5Z6m2z0Q6p6r5-1h6u0w5%5)5+6s5:5=5@630Y6H0l0s1+0x0p1c6K6h6X4^2a5Y6l1i5U5T5R5O5Q5S3M065!5p744/0 0R4?4y7i4}300x5h2e5G445b5d4L7j3A5h6E7v2a5x5o6Y440p0 0i0i7H7A010v0R0 417z7q1.5b5z4F7h7h7I2a4:042H0Q0Y0m722_7p59010T0w0 6b0/577!5!7%5g040v7O7W0`7K047N7o7 3A7s042o7E7X0 7y2{7P5s8d7D7V7=7G897P860o0o837=7R0 4g2_7g7~7P7)7m8w5f7B8m6W8j84015b0H8f8J828o8I8O0 0S8H3n867M8Z5r5t8R8W047Z8B7#8D8N7)7+7-7/397;8V7@0 5_1u3M7$8E0 0G1Y7n7:8a3o7C8L4(7P8P8*8l8T8M8p8X8%3?86020J5V8r8N8l5u8U5l0 8-4a8/5F927*0+8@9l4d502I5355538*7x9f9a9N0 8Q9v8(819G2a860M9X1.8y3 9R8,0S5n9r7=9t9)0P908:7=7)946d9)9y4i9A8`3n8=9E7.9#8J519K569)8i9c9s9Q9U3?8P9|2N989g9)9+a499049u9i8V8q8B1x4+4$4Max0o4P1x0Q4RaC2U2P0Z1)az4P1D4-8V2H0v0#0c0Z0T0G0#0%0C0 1p1r1t1v6t4)1K3a1E0b0I0X0J0I160U1t0-621*0:4*4W9D7,a30oaw3s0nb41I3aaA0+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

.128013f06S:d=F4-yrE/oTxpg2mcb1w937Cve l,8P5)tikné;ua(_shq050g0F0N0U0O0H0X0G0w0H0U0X0X0h010N0O0s010406050X0T0v0v0U0m0l040e0p0H0T0@0p0Q050o0~1012140|0s04051k1d1n0o1k0|0g0O0E0,0.0:0=0Y0O0t0Y0H1B0Y0N0`050%0x0H0F1w0/0;011A1C1E1C0N1K1M1I0N0m1l0N0Y0,170X0s0U0Q0=0u011O1y010b0)0F0Q0U0v0F1I1+1-1=1Q1^1M1{1}0`0a0G0K0m0p0s0p0X0O1a0Q0G0#1)0m0m0F0w2i1d200Q1l0o1%2v1!1$1#1J0g220=1E0Q1`2f1I1t1v0-1P2F0O2H0Q0p2L1I0s2o1l2t2v2Z0}1,2j2N1?2S0m110H0`0G0y2s2%0{2$212)1Q2+2-2/0u2=1-2@2t2E012|0U2.040G0B302u0|332`0=36380G0j3c322%343i2/0L3m3e3o3g350p2,372/0d3t2^2(1x2{3y2}390C3D3f3G3h3I3A390J3M3v3O3x3z3j0A3U2_3W3q040y0c3#3F2O3X3J0y2;1e2?3u3$3.3(0y2 3?313^3-2*3Q380y3b3~3d3E3p430`0y3l473n3_423Y4c3s4f404a4j3)3C4m493w3{3L4s3N3`4b3)3T4x3V4z4p0y3!4D4h3H4p0u3+4J414L3J0u3=2Z4n4u4A0u3}2#1q2X1d2L2y0g1$2D3w0w2T1~1l4)1m4%4#2#4/0#2Y4E1?0P0`0#0b3m4t3W0z2/544y2*0b0`0F0X0N0W1,0O0m594~1Q0_040V5l4K3h0`1c4f553.5o0f3m0G5x2*0x0`2Q0N5r4Q0=5o0M5B5D1Q0p0`0k020t0N0S5O5a2{5F040x0p175J345z3,3457390G5;5*3w0X0g0`020Z0T0p5W5{5}5 5|5~5X4P345^2/5;0G0D0$0N1N0b1b2q0O1b0G2o0Q0E0p0O1N0q0m0T1N2g0G2j5e0N0G5i0m0I0G0i370X6v2Q1b5-5@5_5:5;2b0R4/0Q1t2i0f6x0G6z0G0T6y0Q0@0F0m6B2f2h0O0b0G0p0T6x0T0H6M3W686P2a2f0N6T6V6j0Q6X0.0G0E370F0T6+2o0N6=0m0Q0R1N6!2l0N0l0s1N5%177i5v4V5P0=6|6a0G0n0r0F0v0s1M0G5A4m4W6{6O7y5U5 5V0S7N0S6Z5f5h0(0m0V0j5N666N695;6s6u6`3.7x6a7R7/7P7T5g6C0V0L7!7u5Z7w7L6a6G0*0F7+1?7-5;7:7O5W7=7V5j0V0c7`3@7v01850G7)827I8h8j60648q6261654V7y8h50041P6*5I4f5C7|355u5Y5m0=5R047R0h8J5s010v0O0`4O2Z8F8K015o0I5?6{0y5`030B0A0S6y5f6#6%6)6+2e2g0@6:6=6@0H028+8-3t8x8G8z6/8Q5K8H047t2?8Y8R8M0h8P8E8h8T8V8%5y0`7H8w7y6a8y0`7d7b9b319d980P0w0`8l929s945d1E539i8G0Q8I9L8Z9f9h8X9j8U3)9m1?5,4m9r9G8Z8z9v7g97349B0`806I9F5=9H040F819X5n9o9;9r9t049)9x2u9z3p5d7U6C9`5L0`5q5w9M9O9T8G8M0k9+3w9k044!2?8h5M3D0o4{0F2v2Wav4(1u4*2y2B2w0U1Lay0o4)0|aI0$0(0*04.
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

.128013f06S:d=4-yr./opg2mcb1w937ve[ l8+P5)ti]kné;Lua(_shq050g0B0K0T0L0E0W0D0t0E0T0W0W0h010K0L0p010406050W0S0s0s0T0l0k040e0o0E0S0?0o0O050n0}0 11130{0p04051j1c1m0n1j0{0g0L0A0+0-0/0;0X0L0q0X0E1A0X0K0_050$0u0E0B1v0.0:011z1B1D1B0K1J1L1H0K0l1k0K0X0+160W0p0T0O0;0r011N1x010b0(0B0O0T0s0B1H1*1,1;1P1@1L1`1|0_0a0D0H0l0o0p0o0W0L190O0D0!1(0l0l0B0t2h1c1 0O1k0n1$2u1Z1#1!1I0g210;1D0O1_2e1H1s1u0,1O2E0L2G0O0o2K1H0p2n1k2s2u2Y0|1+2i2M1=2R0l100E0_0D0v2r2$0`2#202(1P2*2,2.0r2;1,2?2s2D012{0T2-040D0y2 2t0{322_0;35370D0i3b312$333h2.0I3l3d3n3f340o2+362.0d3s2@2%1w2`3x2|380z3C3e3F3g3H3z380F3L3u3N3w3y3i0x3T2^3V3p040v0c3l1n2W1c2K2x0g1#2C3v0t2S1}1k3/1l3-2!1d2=053^0!2X3U2N010N0_0!0b3+3M470w2.4d462)0b0_0E1a0q0S0B0S0l4i3#470^040U4u3E470O0_1W0B0T0S4A334x0f3l0D3D3o0u4m0L0W0K4J3v4x0J4N4P3v0o0_0j020q0K0Q4!4e2)4R042P4V40304#3V4L3!4B1=4g380D524W3V0W0g0_020Y0S0o4,595b5d5a5c4-4^3c4`47562.520D0R0T0D0b1a2p0L1a0D2n0O0A0o0L1M0-0D4n0O4p4r0l2j1M4F4H4}335o51525e5i5X5g5f5j2Y065q4O4/2`0_3^0p5F0V5Q4I5k385m1=4%040h4.4j2`4;1D4U544w0_4z5@5_5,045=641=4Y5~4v1=0t0v0_03290o4s0D2G0D1+0*0g0P1Z0S0L2n0D6c5@5(5q690;494=4c5@5*5 3g5-2c5:6C2Y6M6h1P5{0h5}6L6G014x0C0M4M6D5)5)6#6I2n0K4s1b6!5+0;0s0L0_3*6+6F6^480_0B0)0B6d1P4|6~6,6U4~6a5.6R0T1K4G5?2!705{0m766O042d0p7o6$664Z796,6.0_6:6=6g7c6_6{3(7D335{0G7I3v4D045J5L4s7t4x677k6N346P5/0B5;7g1L5R68706f6D1c430B2u2V7:3.1t3:2x2A2v7%7?0n3/0{7 0#0%0)04.
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

.128013f:6S0d=4-yr./èNoxpg2mcb1w937Cve l,8+P5)tikné;ua(îshq050g0F0O0V0P0H0Y0G0w0H0V0Y0Y0h010O0P0s010406050Y0U0v0v0V0l0k040e0q0H0U0^0q0R050n0 1113150}0s04051l1e1o0n1l0}0g0P0E0-0/0;0?0Z0P0t0Z0H1C0Z0O0{050(0x0H0F1x0:0=011B1D1F1D0O1L1N1J0O0l1m0O0Z0-180Y0s0V0R0?0u011P1z010b0*0F0R0V0v0F1J1,1.1?1R1_1N1|1~0{0a0G0L0l0q0s0q0Y0P1b0R0G0$1*0l0l0F0w2j1e210R1m0n1(2w1#1%1$1K0g230?1F0R1{2g1J1u1w0.1Q2G0P2I0R0q2M1J0s2p1m2u2w2!0~1-2k2O1@2T0l120H0{0y2t2(0|2%222*1R2,2.0{0u2=1.2@2u2F012|0V2/040B302v0}332`0?36380i3b322(343h0{0M3k3d3m3f350q2-370{0d3r2^2)1y2{3w2}040C3B3e3E3g3G3y040J3K3t3M3v3x380A3k1p2Y1e2M2z0g1%2E3u0w2U1 1m3%1n3#2$1f2?053-0$2Z3T2P010Q0{0$0b3Z3L3 0z0{0G453~2+0b0{2p0s0F0V0O4b2_3U0`040W4l3D3 0R0{1d3^313C344o0c3k4a462+0x0{2R4k4x2v4z3u4o0I4D4N3U4u040O0r4K2$4F1R4B4R4!3g4H040Y1#4r4A0{0N4%4c1R0q0{0j020t0O0T4=4m4t4*4,0l4 4s1@4$4L3l501@48040G5f4a594S3 0Y0g0{020!0U0q4}5o5q5s5p5r4~593s5b1R5l495g0c1-0l1}0G0R0c2l1O0O0k4h0G1{0^0F0l0m0G0p0q0v0x2p5N0G0b0q0P0,5p1O0H02030B0A0T1c0G2p3-0s0P5/0V0-0Z0V0X2I5(0w130V2r0o2p0Y0m3S5B0?5D5e5F5H5J4W0O5M2m5P5R535X0D622R1O2m675I6a6c0G5.0G5:5=5@5_0g5+0O5`0S0s0S0O5V6e5z5j1@6i5g0G5t5x6#5v5u5y2!066Z6W1R41040P44594E4?3g4v55344^040h0h6|3u0v0P0{0f724n0{4C5z6Z6-4(404f0%0U0l4w2!6^6g010Y0y5n6I0T5;5?6*2?6,5g6.0?6:0F0+0F783 586+7d7A7f6:2p0O7j7l2?7n562{0{6n7H1@6~0K7Z7W044g4i4Y3_7f4o4q5i7f4U7S317U6}4_7%0?742:4.4O0{4Q6@7B357X4X8079044;6V0n3{0F2w2X8g3$1v3(2z2C2x0V1M8j0n3%0}8t0%0)0+04.

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

.128013f06S:d=4-yr/oUpg2mcb1w937veê l8`+P5)tikn;ua(shq050g0B0L0R0M0E0T0D0t0E0R0T0T0h010L0M0p010406050T0Q0s0s0R0l0k040e0n0E0Q0:0n0O050m0`0|0~100^0p04051g191j0m1g0^0g0M0A0(0*0,0.0U0M0q0U0E1x0U0L0?050Z0u0E0B1s0+0-011w1y1A1y0L1G1I1E0L0l1h0L0U0(130T0p0R0O0.0r011K1u010b0#0B0O0R0s0B1E1%1)1.1M1;1I1@1_0?0a0D0I0l0n0p0n0T0M160O0D0X1#0l0l0B0t2e191|0O1h0m1Z2r1W1Y1X1F0g1~0.1A0O1?2b1E1p1r0)1L2B0M2D0O0n2H1E0p2k1h2p2r2V0_1(2f2J1/2O0l0}0E0?0D0v2o2Z0@2Y1}2#1M2%2)2+0r2.1)2:2p2A012^0R2*040D0y2|2q0^2 2?0.32340D0i382~2Z303e2+0J3i3a3k3c310n2(332+0d3p2;2!1t2@3u2_350z3z3b3C3d3E3w350F3I3r3K3t3v3f0x3Q2=3S3m040v0c3X3B2K3T3F0v2-1a2/3q3Y3*3!0v2{3/2}3;3)2$3M340v373`393A3l3 0?0v3h433j3=3~3U483o4b3|464f3#3y4b1k2T192H2u0g1Y2z3s0t2P1`1h4s1i4q2X4o4y0X2U3R3*0N0?0X0b3i453s0w2+4Q3J3?0b0?0L0n4!4V4K1/0=040S4%4d2@0?184o4W4)0?0K0f3(304T350D4 4-3}1M0T0g0?020V0Q4#0P57590L5b585a0o2D0D0b172m0M170D0L0B0E1I0D581J4`4i4j3s542+4 0D0j0D0G4!4!0S0c0K0G0D2k0O0A0n0M1J0G02030y0x0P0c5X5Z0P0G4{5B554~4 5G5I4#0n0S0v5N5P1?5S5U5H5%5!5L0D0H0D5M5 5)5+3S5C5.5F5H5J5?0r5_5Q5|5V660S61635M620D6n640K0K665*4i4R695-5E6c0Y0t0D0`0l0D5u0s0C1_0D2S2M0t0;0B3p5A6A5D4 2f0B0T0L0D0Q6Z0O0:0B6I2a2c0:4P6y4?536B5E5c5a6`5e6|0P6U6C6z4L0?0M6;2V0D722$4:3i786?0.0n0?0h0h7c791M0s0M0?3%4=4(1M4*5y2V066C717e014M042k0L0Q0l4;777l0.0T0v565Y5!5$7P6 4i7z7s0.7C5s0T6T7r4.0.7u3p7y5E7K310?0s4#757k7A7g047j4b7d7W7.046e51304*4,7$523d7b7{7-7^0j7?7}7n48813s4*0K7*7+7|7%7B0?7E7G7I2/8n86017M7O5(0S668d8o7^0H8D8w0O7/7;768u8a0?8G897A8y04666q8C8R7}8F8H3l8K6:8#3s8!8Y8o8T666v7S3z0m4H0B2r2S8^4r1q4t2u2x2s0R1H8{0m4s0^950Y0!0$04.

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.9888f6S=d-èçpg2m!RC 8P5)kuA_sh0:Fq4yr./oTxDbc1w937ve[l,tài]né;a(050g0X0#0,0%0Z0A0r0Q0Z0,0A0A0f010#0%0k010406050A0x0n0n0,0I0H040e0L0Z0x110L0)0r020,0n0k0+0r0p0X1b0I0F0x0X0A050K181a1c1e160k04051J1C1M0K1J160g0%0W0_0{0}0 0B0%0l0B0Z1!0B0#14050;0P0Z0X1V0|0~011Z1#1%1#0#1-1/1+0#0I1K0#0B0_1h0A0k0,0)0 0m011;1X010c0?0X0)1p0X1+27292e1?2h1/2k0n2m040a0r0t0I0L0k0L0A0%1k1m0/250I0I0X0Q2H1C2o0)1K0K232T2022211,0g2q0 1%0)2j2E1+1S1U0`1=2%0%2)0)0L2-1+0k2M1K2R2T2~17281m2/2f2@0I1b0Z140r0R2Q3215312p341?36383a0m3d293f2R2$013k0,39040r0U3o2S163r3i0 3u3w0r0G3A3q323s3G3a0u3K3C3M3E3t0L373v3a0d3R3g331W3j3W3l3x0V3#3D3(3F3*3Y3x0s3.3T3:3V3X3H0T3_3h3{3O040R0C3K1N2|1C2-2W0g222#3U0Q2^2w0.1T1K2{0X2}3e474h0/4p412:010w140/0c473/4w0S3a4C3`4w0)0c141A0#0z282(0g2B2v4H4v2f13040-4V3%4J140n0L0#4#3s4Y0v0D404$2f4F3x0r4_4,3U0A0g14021y4*0+500x5254520O0*0#0X372=1:2F0r4)0#0r4N0r0x1m4Q2=4S0L2v570#53515v5u0+3R064_4`4D2f4y040%4B1D3e0r3$3N0P142t4{3{4Y4!5L3p5O3U0)4(4*5T4w4.3K5N5F1?0L4 0Z5v5+5Z3{0n0%143n5X2S5@5)144:5}155D655,4I5G142M0#0x0I0)5?5-0 0w0Q140M0I1z3R655 69040X0@0X5(4X616p665E681?5H5J6g6D3F5$4+636r1?4Y0Y6x1?5_14466M6h014Y0(6H4W5.140o0f6#4=3j6K6R0 6P6/015/040h6=6T446=6Z622~5C6B666N6i6a0:6d6f63676$6i6k040E3v0A6w63716B744x4M6v6}6z7k72736X5H6b786+3N4M0A4O5p0)5r4U6W6I6Y145W306X5#045i7r046Q7J7c016{3c7W6,6:7s7O7K6@6_7#3s7Z7T0(0v3#0K4s4o487_0K4b1C0#4d7~2Z2U0,1.7{4b1I4u7$012M0n0z0c0,0w0X0z0B0U141u1w1y1A0r6 4q1P3f0/0;0?0^5!4*1:0g0*0k1%0*2m0r2C2j0 8K7Q3C191w1e0y1j2M2K2M2O0%1l0r2D0}0%852Q8Q1G8v1T3s1^1$1(1*893s2s2j2l142y0e0Q0I125j0t0H231l474n892 4q7^8@3U5H4A6=4@5N7-5!4L6t7D4P3v5q4T7j7)7X5V6=7Q7S9k5U144/4;3s0A2c045z595b5d2)0r5g5i5k7D5m5o9q7G9s5z5B6q7w146G7a7n0)5Q045S9A604Z9x6.9.6y047=9(6X6@025;5A9`7K6{5|9u8a4Y8s3p7l7v7K7x776e7A9e7e6m6o7t5D7n5H6u7i7Ta73B7uam766caea07X9y5%9?6O147Va47.5`046VaG3U6Zaf3{6@0f6*ay8aaA6LaL9B7U6=7+6`aI7!aX9/6!aT3s0L4@290gaO4%9n7E9V7H9t4q6X9waC6J7RaBa)9@aFa|a1a%aqa!147,b36Sb8a 7L047;7?9c7`2T871L048n1c510)0^8p0r0{0r0/0x0N0%0i2v8#1c118C0x5N9ca:1C9c0r4!9c4N9p4R9s0-5i0Y0R0D0h0Rbj7@4i9^0r9N7i0I0,0r0*0W3v0x8H5k1m93951mbw5g059cbY0C0(0raR5h4*0Yb$a+bP5lb=b@0*0r0$bLb*ai7jbP0-cf1i0,2HbG2M0}0X0x7i0v0J1N3f7|0:0=0@8-2.3{0,0g4)0)2G8Z1m0S1ccO0)0l141I3scLcNcP1l0h110#1~bq1vbsaj1Qbp0b0r0q0:5b9O1h1jcQci0r0P0|8C1:4h0k0%d20r010A1%0Q1A2d0-20290Q0B8q2j0r0cb/0)0j0=0A0vb,005l280^0X0c2h0Q0,dc0!b,0Lcy0r0W5c2Bbu8#1i0^0;0I2#5n1:0n5a0B4idOdIdzdBdD1:0,dK0Qbx8q5q0%dc0AcB8u167|4ld^8wcG0A04.

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.

🐍 Console Python
>>> triangle_bas(4)  # affiche un triangle tête en bas
####
###
##
#
🐍 Console Python
>>> 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 !

🐍 Script 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

.128013f:6Sd=4-yrA./èNopg2mcb1wR37Cve l,+P5)tikné;zua(_shq050f0E0M0U0N0G0X0F0v0G0U0X0X0g010M0N0r010406050X0T0u0u0U0k0j040e0q0G0T0@0q0P0F020U0u0r0R0F0z0E110k0Z0T0E0X050n0~1012140|0r04051z1s1C0n1z0|0f0N0D0,0.0:0=0Y0N0s0Y0G1Q0Y0M0`050%0w0G0E1L0/0;011P1R1T1R0M1Z1#1X0M0k1A0M0Y0,170X0r0U0P0=0t011%1N010b0)0E0P1f0E1X1}1 241)271#2a0u2c040a0F0J0k0q0r0q0X0N1a1c0#1{0k0k0E0v2x1s2e0P1A0n1_2J1?1^1@1Y0f2g0=1T0P292u1X1I1K0-1(2T0N2V0P0q2Z1X0r2C1A2H2J2;0}1~1c2#252*0k110G0`0x2G2^0{2@2f2`1)2|2~0`0t321 342H2S01390U2 040A3d2I0|3g370=3j3l0h3o3f2^3h3u0`0K3x3q3z3s3i0q2}3k0`0d3E352_1M383J3a040B3x1D2/1s2Z2M0f1^2R3H0v2+2m0!1J1A2.0E2:333X3+0#3?363R0=0O0`0#0b3X3r3}010y0`0F433G450P0b0`0P0w2C0W0v0Y1l2(1r1t3@442$010_040V4a3|4s0P4f4x3Q4s4u0L0c3E0F4J494r253 040N424p3e4L4b4z4B4S2I4U4y250q0`0g0g3x4!4D250u0N304C3h4u4H4Y0{4K4{4,3h4O2C0M0T0k0P4+3P3h4/4;4_064{563H4O0E1T4R2;4}3H4A04544_5k454%044)554M1)58043c4_5d454@4I4|4J5C4s4 0$525o5j5I4.4:5z5F5H5w3~0`5g0X0E4=3H5E5a5G5U4V4N0`505M5v5+384f4h0E4j4l4/0P4o2?5V4t0`4w5B5 5m5N335q4s5s0i5:4#5x5R31635;0=4F6c4-1)5s0I6l3A5?4i4k4m5|5#5D616x4W5n6q3H6a6D455y5A5~6i60040L3O0n3_3=3Y6S0n3#1s0M3%6X2P2K0U1!6U3#1y3{6m0=2C0u0W0b0U0O5^0Y0A0`1k1m1o1q0F4^2?1F342Z3h0U0f0u1b2w0N1b0F0f1 0s0E0k0`1y76787a2x0i0@0M1;040l1/292F736+0C0$0M1$0X17197c1c0k0Q0v522v0D1$2.2+0T2w0F0T1c1?0o0+0s0k1 2R2*0u5@7e000U0r0r5Y0F1o0N0F0P001q0M0F1~0+0f0T0F0M0q190F0E0b270v0U0v0E0H0,127e6 8a0G7M0*0F0N0#0P0@6~0+7F8q0F7K3k0N0X0Q0+7K7M0k7O1l7x7}182v0E7N0F0b0q8z0m0F0e7@0D840+7D0X7D0S0,7C7E7G2x7}840k7V1c7#7%7^0q7*2C8h0F1m6u0X8e8c0.7}2C0P0f7$0F0w0E0U0T3+0T0r8`7D1g8~0F848O7i0U0F4t0.8q7i230J0j1_1b0m1D341z0p8X0F0Q511I7i1b0+0r8K82122R910}1?1b0s047R8;1v8+0f0j2k0N6~2G9S0P9U9y7z3!3/0|6V0$0(0*04.

Crédits⚓︎

Franck Chambon