Anagrammes
Deux chaines de caractères de même longueur sont des anagrammes s'il est possible d'écrire l'une en utilisant tous les caractères de l'autre, quitte à les déplacer.
Par exemple les chaines chien et niche sont des anagrammes, alors que louve et poule ne le sont pas.
Déterminer si deux chaines de caractères sont des anagrammes peut se faire en les comparant après les avoir triées.
On utilise ici une autre approche, récursive :
- si les deux chaines sont de longueur 1, on renvoie
TrueouFalseselon qu'elles sont égales ou non - sinon, on teste si le premier caractère de la première se trouve aussi dans la seconde :
- si oui, on recommence le test sur les deux chaines dans lesquelles on a retiré la première apparition du caractère testé
- si non, on renvoie
False
Exemple
Pour tester si chien et niche sont des anagrammes :
- on observe que
cest bien dansniche - on teste si
hienetnihesont des anagrammes - on observe que
hest bien dansnihe - on teste si
ienetniesont des anagrammes - etc
- on observe que
netnsont égales : on renvoieTrue
Vous devez écrire deux fonctions :
supprime_premier(chaine, cible)renvoie un couple(present, chaine_sans_cible)dans lequel :-
presentest un booléen indiquant si le caractèrecibleest présent danschaine,chaine_sans_ciblela même chaine siciblen'est pas présent, la chaine privée de la première occurrence deciblesi elle est présente
anagramme(chaine1, chaine2)renvoieTruesi les deux chaines sont des anagrammes,Falsesinon
On garantit que les deux chaines sont non vides.
Exemples
>>> supprime_premier('ukulélé', 'u')
(True, 'kulélé')
>>> supprime_premier('ukulélé', 'é')
(True, 'ukullé')
>>> supprime_premier('ukulélé', 'a')
(False, 'ukulélé')
>>> anagrammes('chien', 'niche')
True
>>> anagrammes('énergie noire', 'reine ignorée')
True
>>> anagrammes('louve', 'poule')
False
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
.128013s3_8èufvy n7aS1me(P24:jtwi][h)6Oo;bcdg/T0làqp.rFL-,=+k95Rxé050L0r0y0n0A0Q0b0k0K0Q0n0b0b0!010y0A0T010406050b0g0q0q0n0V0j040o0H0Q0g0 0H0l0k020n0q0T0I0k0)0r190V0S0g0r0b050N16181a1c140T041A1H051K0N1K1M1H140L0A0i0@0_0{0}0D0A0M0D0Q1!0D0y12050/0J0Q0r1V0`0|011Z1#1%1#0y1-1/1+0y0J0H0L1c1,0V1I0y0D0@1f0b0T0n0l0}0u011;1X010h0;0r0l1n0r1+2c2e2j1?2m1/2p0q2r040a0k0t0V0H0T0H0b0A1i1k0-2a0V0V0r0K2M1A2t0l1I0N282Y0y2625270L2v0}1%0l2o2J1+1S1U0^1=2,0A2.0l221T1+0T2R1I2W2Y33152d1k2@2k2|0V190Q120k0p2V3713362u391?3b3d3f0u3i2e3k2W2+013p0n3e040k0c3t2X143w3n0}3z3B0k0v3F3v373x3L3f0(3P3H3R3J3y0H3c3A3f0F3W3l381W3o3#3q3C0m3*3I3-3K3/3%3C0e3?3Y3^3!3$3M0%3~3m403T040p0P453,2^413:0p3h1B3j3X464e480p3s4j3u4l4d3a3`3B0p3E4r3G3+3S4w120p3O4A3Q4m4v424F3V4I4t4D4M493)4P4C3Z4o3=4V3@4n4E493}4!3 4$4S0p444*4K3.4S0u4b4:4u4=3:0u4i334Q4X4%0u4q351N311A2=2#0L2)3x0K222B0,1T1I300r323j3P055e0-5m4;0}0$120-0h5o4#2k0z3f5z4+3a0h12160T300A2A0d5k0q0A0r0V5E5t0111040s5U4`3K120K0D0:2.5!3x5X0w3P0k4W470J5I2$5,3Z5X0Z5:5=4n5%0A1.0r5`405.5~5A3o5@040b5_4I5 2k5X0E685F1?0H120Y020M0y0I6k5V0l6b6d5T6f690}674P0k6F5;6B3y122R160Q0/0y6u5#016n040!6Q3x0b2h0401013W6G6H6l5$040-0x0n0d0i0g6W3Z6T6V4I6)5V0$0K120W3A0b646E6G6g1?5v040h3#6?475%1a0n2T5S73336{6R0H5C042`7c60045(5*7j5n6I6D4 6(6(765u120A5y6`7D6J7t7f7h2R7r2k6^6_7k7J0l61637P6m7o2e0L7Y0}7n122|6P7I6I7V6,0r6.6:6=6A6*5W125/747B7B7U5w7;6/6;7%6S127S3j7l3x6}120O0V1x6%7~8a3Z780r0=7w3u7J7z4k8i7 7.6K1y0g6N0n7,7T6I6T0#883u8j7d7L0V7g0y7i8h6F7J782R0y0g0V0l857/6-837@357y125}7-7_7/6L8y6O3W065040785x654e7o5;7^6v5H042e0n0M8L181y8`6h125Z8~6R7/7u2`0r4~7x7_8r8H7U6x6e8%9k8)8Y5%5)9g549j5V9l2X8I4n9o6z9q9z126j8+5V6T6p6r6t9K9d6b211f981?9A137C6I787G8Y6b2y9V6C9a9*7K9f2.9i8p8(049J8C7_7R855Q4F9-9X068t8R8w8U8W9t7t9v9:859{9Q3S9u7v9x4s9Z7_8l8n9 7{8P8u8,7W1/ab87a79/9han040C9-9}044^9G6R5X0Bapaj6v120i8L0Aaz8*9_aMa87v0p0d0b2e0b0d0K62atad6@ava*8J5J5L5N5P5R9F9yaH9,9caeaV9g9;2X8q9sa-7sa%7Xa{5{9IaK758v7ta(0r0d0La!0dahb09?aS8980a}2.0uaYbib5a)aT7ma,bxa|a/0V5Mbfa=5Saz9baGa|axbk5sa_04bn9mbcbv8obl9r9@ba8Q9!7F7HbA4Xasbfbh0la#bNb1047|7A8tbbaka48V8Xb33a1292941n2A1zb766a`bKb)bq9hbtb-a$beaRawa90rbsaZcdbUaz9^8s8ia3048m72azb=cqb@9C2k8S0.b{858c0470am4V0N5q5l1J570N591A0y5bcS2%2Z21232#0n632Y591GbO3x2R0q0d0h0n0$bf0D0c121s1u1w1y0kcx8p1N3k1H0X0n0k7a0l2T0A1j5;cM6c0g5KbDa;c,a?1Adc0k0l0+0K1y2K8N0k2O1S6d2`0M1x0V0k0T1g2K0r8V0?0K0`dt1:2mdy2Rc}1J3k8y3k1%041/0@7M0y0fdO1g0k1y0ydt7G0h0+2R0ld)0L0gdX8L2Td!1:5(5S5(0+c}0kdadW2R5e0T5R1AdU14dUdWdId@dZd#d=d(0k0+0M3A0k0nd=ec8Md_0@0Dd|0Dd~0.0k0;dm00d42d0?2o5edO0+0yd~2$0H0g0id~5Zdc5k72d/dk5f3C0yeM0xeM0V0?0Rdb5f3x1^1$1(1*c*8k6~cH71bV2Ydc0Ed da2.0ke22S2H5RdB0`0Z0k190A0?da2`1Sc{0k1w00e1eB0keLeNewd)bC5MeP5pe*3Ze,1`1)2sar04eS2o8Bbo8DbzfEake=8e8g6fcLeW9Je805ead`dYerd$ehejelend?eqdOd{0Vd}d%d)ezd40L0+0xe(eIeK2Gfm1Bdea:d~0we01kf0e4e60NfQdUdad.0i0Hf32I8Vd52`0AdAebeMdC1:fs5r0sfBd/f68.8z0y9Jdce70A3k0NdSc)0te#e d4d6d8dagm5lc095c3eV5rdPd014gBfRgy2Ke c|0-0g0*es7v0?0b1jd:1:0Q1jdydFdA0pf6g72og9f3e20+6M6OdKgYgd5e1o7ff9da0sdI0?2O0J0`1:2O0_0k0VdodG1T2L0+fPgye9gW2`1jg@1kfp2AgYdBdi5Sf#d^dO2OgKca4idlb,0?1/hadFg$axc4g5gy7u0K0g2Nc|0n5Kcue)5rhwbFhA0Vh8cif6bUgveWhhg_gag-d4axhh0+d;2L0rf6f80?en0{0A0khW0k9T0Q0+2oey0lfd0g2efoi5hghGcnfNgQeI0:d)30g}fChea!gFg%9ggxdTgyda72dK19ie1:3A3#g)i5ilcfin5lei0/2Ldtiwilci4qdl0sdWbGdAephDhegldcaxhIh;ehdndp0{0:c,fCiUb-h$5li-gP5l0E0U0k0G1k8N6d0r060L1j0Khyi9ib1kg80H0jd~2ddAhGh(5Oh*h,agh.beh:gQ5/gUdUgX0K00ehebf5f emh!0QdWhggH2M0k16i%c|hQ0k01hih}j66$g4hpgV6ci5dpeAeheDhyh9huh=0lg`i+ft40fve.fy6|e=cIcvfMhJgg2S8N2AeUjZgzgUk614gA0Qgz0-iS0=04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)