Sous-suite d'une chaîne de caractères

On appelle sous-suite d'une chaîne de caractères, une chaîne produite en enlevant zéro, un ou plusieurs caractères.

Par exemple, "AN", "API" et "LAPIN" sont des sous-suites de "LAPIN". Par contre, "APNI" et "LAPIN !" ne sont pas des sous-suites de "LAPIN".

Notez que la chaîne vide "" est une sous-suite de n'importe quelle autre chaîne de caractères.

Écrire la fonction est_sous_suite qui prend en paramètres deux chaînes de caractères chaine_1 et chaine_2 et renvoie le booléen indiquant si chaine_2 est bien une sous-suite de chaine_1.

Exemples
>>> est_sous_suite("LAPIN", "AN")
True
>>> est_sous_suite("LAPIN", "API")
True
>>> est_sous_suite("LAPIN", "LAPIN")
True
>>> est_sous_suite("LAPIN", "APNI")
False
>>> est_sous_suite("LAPIN", "LAPIN !")
False

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

.128013wl7;,a/: +q]r0npmj3_6kséRhf45(vtb=ocgeS19)2[iITPd8uFy050X0M0G0g0T0c0x0j0K0c0g0x0x0I010G0T0q010406050x0Z0r0r0g0n0#040N0J0c0Z0_0J0p0j020g0r0q0e0j0z0M130n0l0Z0M0x050h101214160~0q041u1B051E0h1E1G1B0~0X0T0F0.0:0=0@0A0T0L0A0c1U0A0G0|050)0H0c0M1P0;0?011T1V1X1V0G1%1)1#0G0H0J0X161$0n1C0G0A0.190x0q0g0p0@0R011+1R010B0+0M0p1h0M1#26282d1-2g1)2j0r2l040a0j0W0n0J0q0J0x0T1c1e0%240n0n0M0K2G1u2n0p1C0h222S0G201 210X2p0@1X0p2i2D1#1M1O0/1,2$0T2(0p1|1N1#0q2L1C2Q2S2}0 271e2.2e2?0n130c0|0j0O2P310}302o331-3537390R3c283e2Q2#013j0g38040j0t3n2R0~3q3h0@3t3v0j0C3z3p313r3F390D3J3B3L3D3s0J363u390v3Q3f321Q3i3V3k3w0d3!3C3%3E3)3X3w0Y3-3S3/3U3W3G0P3^3g3`3N040O0o3J1D2{1u2,2V0X2Z3r0K1|2v0$1N1C2`0M2|3d464f0%4n402/010w0|0%0B463.4u0b394A3_4u0p0B0|1s0G0u0x0J0Z0x4N0Z2F0M4F4t2e0{040E4W3$4H0|0K0A0*2(0u3b1v4o4B4Y0|0f3J0j3#3M4)4+2;0M0u3m4:3o4{3T4Z0Q0i3Q0j5b4`4=1-4w040T4z532R5d4G340H0|2s4$3r4Z4#5k4s4%344}4,50522 5e0@574_553`0J0|0I0I5I5F010r0T0|455w5J4u4Z595w065c5%5m4X5f0|2L0G0Z0n0p5P5n5f0K0|0V0n1r5a5c5X5z040s5=5*0@5L045O5w5)5y1-5S5U5}5b5 5+040B3V636b3E4)6m3r0J4D5h5;696h6o044*5B4.5s560|5!2}5$5(6g5Q5g5i6q3T0p6p6w5Q665N6O415A4 516D3`4Z0S6#4(616)4?040m6G3d6I6J5%6x3s0|626S5?650|0k682}6a3r6d436f6?6K6}4v0|6N6|646_6+7e6n016U713d736P5p045r5W5Q5u6,3i6Y4-5D4;7a576:3o6=785(6^5g5-5/6v727J5^045`5|5#6@6L5,0(7M6W4u0w7Q0!3u0x4V5#1u4q4m477/0h4a1u0G4c7@2X2T1{1}2V0g1(7;4a1A5x3r2L0r0u0B0g0w500A0t0|1m1o1q1s0j7E2R1D3e1B0U0c0j4L0j0g4Q2E0j2C0=0T810j2I2`0J0K0y0%0n8v0F2M0j0Z2(0j1{0Z0/1*2?1e1{5:0y1*5!1K4i2-3`1/1W1Y1!853T2r2i2k0|2x0N0K0n0`0G2y0#221d464l5x2~4o7.8:3`5g4y7w0@6t4`7t7a4I4K0x4M4O4Q4S4U9d017v9h7f6Q6z4~4-4/5E7C4@7!606A6Z7A547u0|58776^9w0T9E1-6U9R0@755V6H7V9i6`9U7k5M9$9W9N7W040b1T1)9$9P9$66020c0G0e9;7q7s9B7f9t9 7j9w9G9z9r5H7i6r6t280X9;9#a93T9@9_9{ag419}2ia70|5va24|9x6B9I8n9K049M7U6?7J7c5j7O5Qa49y509A7Ba00|6(9ua37cap6.9?5M7m3o7o6Xau9HaTaPas6Pafa)6$0|6/77789Oa+7n6^66709)5T76aB6Ja=5haV04a`al4u75aL7F9Z7f7K7Y5:ae7haG7a7l9|5qaoaQ5taq9raIavaT0Q3!0h987:2S83490(0*0,04.

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

.128013wl7;,a/: +q]r0npmj3_6kséRhf45(vtb=ocgeS19)2[iITPd8uFy050X0M0G0g0T0c0x0j0K0c0g0x0x0I010G0T0q010406050x0Z0r0r0g0n0#040N0J0c0Z0_0J0p0j020g0r0q0e0j0z0M130n0l0Z0M0x050h101214160~0q041u1B051E0h1E1G1B0~0X0T0F0.0:0=0@0A0T0L0A0c1U0A0G0|050)0H0c0M1P0;0?011T1V1X1V0G1%1)1#0G0H0J0X161$0n1C0G0A0.190x0q0g0p0@0R011+1R010B0+0M0p1h0M1#26282d1-2g1)2j0r2l040a0j0W0n0J0q0J0x0T1c1e0%240n0n0M0K2G1u2n0p1C0h222S0G201 210X2p0@1X0p2i2D1#1M1O0/1,2$0T2(0p1|1N1#0q2L1C2Q2S2}0 271e2.2e2?0n130c0|0j0O2P310}302o331-3537390R3c283e2Q2#013j0g38040j0t3n2R0~3q3h0@3t3v0j0C3z3p313r3F390D3J3B3L3D3s0J363u390v3Q3f321Q3i3V3k3w0d3!3C3%3E3)3X3w0Y3-3S3/3U3W3G0P3^3g3`3N040O0o3J1D2{1u2,2V0X2Z3r0K1|2v0$1N1C2`0M2|3d464f0%4n402/010w0|0%0B463.4u0b394A3_4u0p0B0|1s0G0u0x0J0Z0x4N0Z2F0M4F4t2e0{040E4W3$4H0|0K0A0*2(0u3b1v4o4B4Y0|0f3J0j3#3M4)4+2;0M0u3m4:3o4{3T4Z0Q0i3Q0j5b4`4=1-4w040T4z532R5d4G340H0|2s4$3r4Z4#5k4s4%344}4,50522 5e0@574_553`0J0|0I0I5I5F010r0T0|455w5J4u4Z595w065c5%5m4X5f0|2L0G0Z0n0p5P5n5f0K0|0V0n1r5a5c5X5z040s5=5*0@5L045O5w5)5y1-5S5U5}5b5 5+040B3V636b3E4)6m3r0J4D5h5;696h6o044*5B4.5s560|5!2}5$5(6g5Q5g5i6q3T0p6p6w5Q665N6O415A4 516D3`4Z0S6#4(616)4?040m6G3d6I6J5%6x3s0|626S5?650|0k682}6a3r6d436f6?6K6}4v0|6N6|646_6+7e6n016U713d736P5p045r5W5Q5u6,3i6Y4-5D4;7a576:3o6=785(6^5g5-5/6v727J5^045`5|5#6@6L5,0(7M6W4u0w7Q0!3u0x4V5#1u4q4m477/0h4a1u0G4c7@2X2T1{1}2V0g1(7;4a1A5x3r2L0r0u0B0g0w500A0t0|1m1o1q1s0j7E2R1D3e1B0U0c0j4L0j0g4Q2E0j2C0=0T810j2I2`0J0K0y0%0n8v0F2M0j0Z2(0j1{0Z0/1*2?1e1{5:0y1*5!1K4i2-3`1/1W1Y1!853T2r2i2k0|2x0N0K0n0`0G2y0#221d464l5x2~4o7.8:3`5g4y7w0@6t4`7t7a4I4K0x4M4O4Q4S4U9d017v9h7f6Q6z4~4-4/5E7C4@7!606A6Z7A547u0|58776^9w0T9E1-6U9R0@755V6H7V9i6`9U7k5M9$9W9N7W040b1T1)9$9P9$66020c0G0e9;7q7s9B7f9t9 7j9w9G9z9r5H7i6r6t280X9;9#a93T9@9_9{ag419}2ia70|5va24|9x6B9I8n9K049M7U6?7J7c5j7O5Qa49y509A7Ba00|6(9ua37cap6.9?5M7m3o7o6Xau9HaTaPas6Pafa)6$0|6/77789Oa+7n6^66709)5T76aB6Ja=5haV04a`al4u75aL7F9Z7f7K7Y5:ae7haG7a7l9|5qaoaQ5taq9raIavaT0Q3!0h987:2S83490(0*0,04.