moyen
Des règles et des lettres
On se donne une chaine de caractères appelée motif
ainsi qu'un ensemble de règles du type "Si le caractère lu est un a
, remplace-le par ab
".
L'ensemble de ces règles est stocké dans un dictionnaire Python dans lequel :
une clé est un caractère lu,
et la valeur associée est une chaine de caractères par laquelle le caractère doit être remplacé.
Si le caractère lu ne fait pas partie des clés du dictionnaire, il n'est associé à aucune règle et est donc recopié à l'identique.
Exemple
On prend pour règles { 'a' : 'ab' , 'b' : 'ac' , 'c' : 'd' }
.
On prend pour motif de départ 'a'
.
Après une transformation on obtient 'ab'
.
Il est aussi possible d'effectuer cette transformation plusieurs fois de suite en l'appliquant à chaque étape au résultat de l'étape précédente.
Exemple
On garde pour règles { 'a' : 'ab' , 'b' : 'ac' , 'c' : 'd' }
.
On prend pour encore motif de départ 'a'
.
Après une transformation on obtient 'ab'
.
Après deux transformations on obtient 'abac'
.
Après trois transformations on obtient 'abacabd'
.
Vous devez écrire deux fonctions Python :
transformation(motif, regles)
prend en argument un motif initial (une chaine de caractères) ainsi qu'un ensemble de règles (un dictionnaire) et renvoie la chaine obtenue après une transformation.
n_transformations(motif, regles, n)
prend en argument un motif initial (une chaine de caractères), un ensemble de règles (un dictionnaire) ainsi qu'un entier n
et renvoie le résultat obtenu après n
transformations.
Exemples
>>> regles = { "a" : "ab" , "b" : "ac" , "c" : "d" }
>>> motif = "a"
>>> transformation ( motif , regles )
'ab'
>>> n_transformations ( motif , regles , 2 )
'abac'
>>> n_transformations ( motif , regles , 3 )
'abacabd'
>>> motif = "abc"
>>> transformation ( motif , regles )
'abacd'
>>> n_transformations ( motif , regles , 3 )
'abacabdabacdd'
>>> motif = "ddddd"
>>> n_transformations ( "ddddd" , regles , 50 )
'ddddd'
.65038.9875.128013lS]et-UdA5f18%umaèg,_/R=in
6)yàqPhcDL[(bEsx.p;r4j'C90"ov+w73êOk:é 2030e0a0b0n0v070M0-0F070n0M0M0u0Y0b0v0P0Y020x030M0l0m0m0n0R0A02080Z070l120Z0w0-000n0m0P0Q0-0t0a1c0R0C0l0a0M030s191b1d1f170P02031K1D1N0s1K170e0v0!0`0|0~100E0v0p0E071#0E0b15030=0K070a1W0}0 0Y1!1$1'1$0b1-1/1+0b0R1L0b0E0`1i0M0P0n0w100.0Y1;1Y0Y0h0@0a0w1q0a1+27292e1?2h1/2k0m2m02060-0D0R0Z0P0Z0M0v1l1n0:250R0R0a0F2H1D2o0w1L0s232T2022211,0e2q101'0w2j2E1+1T1V0{1=2%0v2(0w0Z2,1+0P2M1L2R2T2}18281n2.2f2?0R1c07150-0i2Q3116302p331?3537390.3c293e2R2$0Y3j0n38020-0'3n2S173q3h103t3v0-0S3z3p313r3F390g3J3B3L3D3s0Z363u390y3Q3f321X3i3V3k3w0%3!3C3%3E3(3X3w0j3,3S3.3U3W3G0W3@3g3_3N020i0X3~3$2/3`3)0i3b1E3d3R3 47410i3m4c3o4e46343:3v0i3y4k3A3#3M4p150i3I4t2T2`0a2T2,2W0e222#3T0F2@2w0/1U1L4D2|3d3J034M0:4T4f2f0*150:0h3J0-4v3T0w0h1520290M0h3:2P4B4+3_14020J4V3-4g150m0Z124(4_502f4|0q4)4`51022M0p1/1C573^474|0z0+3Q0-5r4*583i152M19070=0b5c5u100Z150u5C5l2f0M2c02001z540Q5O0l5Q5q5s5d4#154?0R5I4!5v020F1d0n2O0a2M5$4n1?0Z0$152;5/3M52540v562 5D0Y4|5p4B0x5s665t5J1?4$025}5_4,155)0R5+0b5-0a6e3_5=5@0w6n5e5g5i4 6910625V67675X5'5x0l5z0n5B4B685%5E150#5H6K6D3E5w0a5h1B6w6M61150I6Y5:6T5(5*5,5.5k6Z4|096A6C606b0a0^6m6-6'6!02632}656B6=6x3s6U5y5A6s2f5F026P795'6h6j6l6;6S0Y6b2M0b0l0R6r6R600w766G78640x4m3r6b4'7e3E4.020w0r4:0w4=4@0v1m5j5 744|4~6{5`0253556%3r5a7E755f6V6v7V3T7$7s747u7H7!7,155o7j6?5Z3V7%7:0r7%6p6c7r2}6L6|0w0K5w290p6`7R6.157U8d8615834U605n6 4d72857W7Y6d7.6Z7b6Q847k7:7K7M3W4^8h7#8f7=405{7Z7+4{155b8v8i7(6W7Q8l7S7@7_747m0;7p8k3o8r6f7X5|5~4d1D4X4E1O2{1D4G1D0b4I8_2Z2U0n1.8;0s4G1J4Z6|2M0m0r0h0n0*0a0r0E0'151v1x1z1B0-8o3o1O3e1K0H1:2`0Z1.0o2v0-0M0U0n0P282M0w6k0-0n0l0N4*0n0-0E2M0h1Z1|0P0M0+0s0s0h0R0O0$0v0*130a1T0n0O3V0p0s9$9'0s0H0c080A0M0b0k0V0'0k0f0j2v1+1w029?0M9_0b9x6X0sa41D0n3w2;0!2j0b0,0_2j3a0W0y0j0-9E0-1/0-0K7O070Z0p0v9`1:0f0RaC122#0H2;0:0w1c0A5-9I2h2I1:0e0,0FaG2MauaU0,aiaz9D1waj0-0e0U0(209l0!1U290b0M0O9p170E0.0-0v0e100l2(0c0M1i1k7O0w0c2D0~0v90150d2(9zb62Has2E2F90039N3T0E0a0n0:0R2'4$9O9Q1001b20ab4bjb8babmbd1~0-120b1/100D5-1c2=0bau2;6b0504ae2Ta|9qa59N4?0w2Ob84*8:028C5!1c4^b/251b2j0F9t1d0`0R0,aQ0|0`0E0?bha;2J4W4N7(776I8/cba_1Qb'0)1n9E4M7pbV2j192G1:avca4Y8t56b/0O2z0Z7pc40n9kb.cb7g6+6`b^631R036G3e1'b'2F0`6^0l0v0c0F0v0-9a2Gas1d12aU9l0{ala+0la+0vb,1m2k0vaZcv4E6uabb/0q0-1m9I0TcC9Hc30!3u0acD1=0Zc!c10-0BcH4Y6F6H6Jc a`1DcS17dq1M022F2?0wd0d2av2M4M0P0v1:dh070Ua aj0v9kchcO0sds0scQ94ckbMbS2;1:an9F0!0Z0Aa?dic|1B7wce0sczdo1K0G4;aub)1mc?1nc{7H7J6i7Lb=6Ib85jc d11nc02G0oaZc3b;7Nd2an4D2k9Gbi2;a+1:2v1|aZdhd4cDcub/cxcf4Y9Iai0Fa!0-c0cdbVc9b/ec8Eb80Jcxd0c}0M0zew4EdN3ea|a+6I0nb4bt0R0F0E0c0a0N0{0l0:100eeXeZ1de$e'e)1j0:2da 10971d9k9h1we~1Abp3rbsbu5-bx2d9P0a9R0Y01e}1y1A2dbNbP0YbR3WbUbW0wbYb!0saf1Db%940Hbqd^6I0,2kbk2Je$c69lfG6*a95x0-4~b/dk5A0-6PeC7)1B0IcJ6k2M6:d-cb0z0-1BbV0Ycn6k0l0M2mf)1n0D0A231mcA0t0,0P0,f!cV1|1:6jb-b20-0pd~2#2?0m0KaZ2J4?aCasdabV3uaz0w8b0ReB6k1r0_a,e(aWb7d20ec:8:cA0faSa+0Ua$csgpb|a+al0ng80,2v9Gdyclc00he91:b71'f:gpc30mf 0E4Nd(f51(1`1)2n7/88du208J477bch8G8*d45^4_f%4YcAd;7LcV0`0}d0av8:ela;a*cN3e2,g+1_1(1*953r2s2j2l152y08aX13bVf@f_8'2S1M8?2 4_b/7k7Cfc7}7GeIb?b8g@598I8N5eevhQhO028Q8z7t6U8UhN1?8n8Z6Z7:fR6I8V8(7k8x7%4|0If$7066hF7{5#8R7WfZ7ih|3T81g~hX7/8L8ug{8O6~6;h^7`6c8-h-hY6)6icK805?827}hZ7*i85m159n3A8qici5ccd+a@h#6N02g`8Wh(159C0P2j0eiC6}8giG8SeOiNh;iN7:h~6,irhU09eQ648qh_026^f:iTitib728A7vdlh,hz60g_iViIa(0wiMhTh$hPiZ7ffLh j26y8Y7yix6Z8#7o7q7%5L155S5Qji0b0QiNi_i 6(g}hyhl7?4}i`izi=i,02i$70eR4C8?924Qa{a}e{0Yb51j2H0cb*d_2(071~1gbGd2jQ2HjS1/f4brbtbvf9bzfcbBjMgxb9jYb8j!f;fk0abQbS29a*f902bZb#fw0.cjclcC2L0?gkf/cUijcne#c_gqf*cV9G6i07f=c$0?0Md'he1S1Uhh1%hjg/6Zhn2u2whrht0Phvf^g(jshA8;hC2 hEid7Di040hJd~8DhL1mjziP9oihhSj66}hW3d8)8K8TiqiQ8HjAiu16jaiRd*jykPg^5Gh:6#h?8p5Wid5!ioii7hiYk'h.imi3l6kZ8,jzk/716Bi:jx7xk#jok#7:iJiLkWjwiSjp6}6$ltiWj4l5kY8X02k}ig8!5@if2Sk(5eiX8cla74i2jslJ34ipabi4jb15i*lMlEiHl3iklt5nh'6|jc8%jf5Mjk5R5Pjljn15iFlAl#jrlqlwi;5Ai?jti9jB8.h0914S8@jHdt0L1ngld'9Jawd5eld?gL1xe$1:d29vc*i}6ic'g6ha03a4j:c@6^1Da4klbDbW0pbhkq4P2-3_1^ku1{kw6|kyhp2x0-hsaGkD2zkFkV4_m7kK4UkMlF02kOlV86kR4;e08Fk,jukXi@iyk!m=i9k%l!k=h!l'7@lek;7B6UjdlQ7kjg5Nl;l:5Tl=ltllm{5el{n14}m@m16tfWm07kiUl}l$f!lZm^8elC7%6bi7lNl#lLil6ql2lsm,n5i)6_l2nGk^5Y02l1nRj3ijnwnHinnV6(m`l_6|5nm34ljD8=91938@0;0?0^02.
# Tests
(insensible à la casse)(Ctrl+I)