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.128013.9875s3_8èufvy n7aêS1me(P24C:jtwi]D[hE)6Oo;bcdUg/0làqAp.rL-,=+k%95Rxé050R0u0C0p0E0W0d0m0Q0W0p0d0d0*010C0E0!010406050d0i0t0t0p0$0l040r0N0W0i160N0n0m020p0t0!0O0m0:0u1g0$0Y0i0u0d050U1d1f1h1j1b0!041H1O051R0U1R1T1O1b0R0E0k0~1012140I0E0T0I0W1+0I0C19050_0P0W0u1$1113011*1,1.1,0C1@1_1=0C0P0N0R1j1?0$1P0C0I0~1m0d0!0p0n140x011{1(010j0{0u0n1u0u1=2j2l2q1}2t1_2w0t2y040b0m0w0$0N0!0N0d0E1p1r0@2h0$0$0u0Q2T1H2A0n1P0U2f2)0C2d2c2e0R2C141.0n2v2Q1=1Z1#0 1|2?0E2^0n291!1=0!2Y1P2%2)3a1c2k1r2~2r330$1g0W190m0s2$3e1a3d2B3g1}3i3k3m0x3p2l3r2%2=013w0p3l040m0e3A2(1b3D3u143G3I0m0y3M3C3e3E3S3m0/3W3O3Y3Q3F0N3j3H3m0L3%3s3f1%3v3,3x3J0o3;3P3@3R3_3.3J0g3}3)3 3+3-3T0.453t473!040s0V4c3?2 483`0s3o1I3q3(4d4l4f0s3z4q3B4s4k3h413I0s3L4y3N3=3Z4D190s3V4H2)370u2)2|2,0R2:3E0Q292I0?1!1P4R393q3W054Z0@4*4t2r0,190@0j4,3~4l0D3m4`464u0j192-2l0d0j412#4P4J3*18040v4 4;3v190t0N164_5a4{2r5d0)3W0m5b4e192Y0T1_1G5o505q190K0A3%0m5J5u5p5i042Y1d0W0_0C5t5v4l0N190*5U5M140d2o0401015I5K5V4=19570$5!5D5N0Q1h0p2!0u2Y5?5h140N4}04315 4B5N5k5m5g67145d5H4P065K6i5L5@144?645n3a6k603F195_0$5{0C5}0u663E6219654P6r6c6t5O0u5z1F6b3E6e5,6j6j5.5N5P0i5R0p5T6G6U61190+5Z6#5#6J5y5A6O5c190H6:5w046v6x6z6@4l5d0F6R6T6,6n0u0|6A5C6s6Q6g6S6S6$6-1F6X5S6B3*5X046)7j6^6`5|5~7b5-735x0^0i0$0n7o4u7w5Q7i6g064A3E6n4^6}2r635u786I0n52040n0f540n56580E1q5B3c6,5d5f7Q3Z5j5l0E6p4+7)195s6+6l7f6M7%7=7`5r7B3h197A7,6;045G717e6n5;815N0f8d61636F6q7e0n0P5x2l0T777(7 197+8s6s0n837M1}5d887t7d6,8y04697:8g017l6*8k8G536w7Y5;1g598w6I7*8A3R7.6a8547807_8x7w7|8!018C897v6K0C7y848P7`8H8J7;4z1H4.4S1Q381H4U1H0C4W982.2*282a2,0p1^930U4U1N4:6I2Y0t0f0j0p0,0u0f0I0e191z1B1D1F0m6f3c1U3r1O0%1`370N1^0h2H0m0d000p0!2k2Y0n6y0m0p0i0;5u0p0m0I2Y0j1)230!0d0A0U0U0j0$0#0D0E0,170u1Z0p0#3,0T0U9{9}0U0%0(0r0l0d0C0-0z0e0-0Z0g2H1=1A04a90dac0C9P6N0Uan1H0p3J310k2v0C0=0}2v3n0.0L0g0m9W0m1_0m0P7#0W0N0T0Ead1`0Z0$aV162;0%310@0n1g0l5}9!2t2U1`0R0=0QaZ2YaNa;0=aBaS9V1AaC0m0R000q2-9D0k1!2l0C0d0#1Q3r0I0x0m0E0R140i2^0(0d1m1o7#0n0(2P120E9i190S2^9Rbq2TaL2Q2R9i059)3*0I0u0p0@0$2@4?9*9,1403bm0ubobDbsbubGbx250m160C1_140w5}1g320CaN316n0c0aax2)bg9Iao9)570n2!bs5u92047X7Z3-59c72h1f2v0Q9L1h0~0$0=a-100~0I0`bBb82V4-4!6K7E6Z91cwbd9H9m0M1r9W4Z7yb?2v1d2S1`aOcv4/8~cA4/0#2L0N7ycp0p9Cc6cw7q6y7scd6f1X056X3r1.b 2R0~750i0E0(0Q0E0m9s2SaL1h16a;9D0 aEb20ib20Ec41q2w0Ea_cQ4S6.auc70)0m1q9!0BcX9Zco0k3H0ucY1|0Nc|cm0m0Xc$4/6W6Y6!dlbe1b0Uc;1bdN1S042R330ndmdoaO2Y4Z0!0E1`dD0W00bjaC0E9CcCc-dM0E3r0Uc/cE1rc)0t311`aG9X0k0N0lbadEdi7gdHcT4Sd.b 0G55aNc11qdc1rdh7U7W8Sca8Vbs5Bdldn1rcl2S0ha_coc98U6Zc5aG4R2w9YbC31b21`2H23a_dDdqcYcPc7cS0Ucd0paB0Qa`0mclcyb?cuc7ez7!1q0v8~dmdj0d0Ke804ea1bbgb26Z0pbobN0$0Q0I0(0u0;0 0i0@140Re|e~1hf1f3f51n0@2pbj149p1h9C9z1Afn1EbJ3EbMbO5}bR2p9+0u9-0103fm1C1E2pb+b-01b/3-b=b@0nb_b{0Uay1Hb~9m0%bKeg6Z0=2wbE2Vf1cr9Df)5`2!ew9D5fc7dG5S0m6)e!6L5A0Hc(6z70eUcw0K0m1Fb?01cI6y0i0d2yg51r0w0l2f1qcV0:0=0!0=c)c@231`6xc5bm0m0T8S2;330t0Pa_2V57aVaLdwb?3HaS0n8q0$eZ6y1v0}b3f4a?brdo0Rd992cV0Za/b200a|cNgOchb2aE0pgx0=2H9YdVcGcl0jf:0mbr1.gcgOco0tgo0I4!e4fu1/211:2z8|8ndR2-8/7lcC8X7-04dq8j4+g2cU0mec7Yc@0~11dmaO92eJb8b1c,3r2|h8201/1;9n3E2E2v2x192K0ra@17b?gggi8`4+4)3=3b4+c78a4@fB8/7O8/7S8R55eA8W7~798uh.8$8K8(6~7@8L8He:8/8C9F4r6i8l7D7h6Z7}3B6H6C5Y8L5d0Hg13a6h7u7`8b3,i06uf.c)8r3qie7k8ihYidi88I7/8 2(7e7ail7cix476nh|8{8,6_it6|8+6I6D64iA2(iL7C6K8.h}5E04i54ziKi78Qcxiabbhh19hjh@7R199U0!2v0Ri3h_i(6Vf|auhk866?j28#iR6w7riv3BiH190Fe=8E72io1975gcj0i*71iKiCf@ibi?e@h`04i|i~jq8vi_hlf 7sj68)5F3%im5Jh)8@8_8L5%195*jxi^jfi/hniYhL86jEjY8|i9dHiciG7?873;hq9jh!9k4%e_bhfk01bp1n2T0(c2eh2^0W251kb!dok22Tk41_ftbLbNbPfybTfBbVj~gWbtkabskcgdfJ0ub.b:2lb1fy04b`b|fV0xb cFbF7y6wd09#bwe!5{cIf0dfgPg6c@9Y6w0Wgec~0`0de3hE1Y1!hH1-hJhc6shN2G2IhRhT0!hVghh5j#1S959G3ch(8?7Lj901h-l3h/c8emh=bsjDjzeTjJh~047^iPi`i$6/l3i48=j*i:j,8L8Nih6=iki6in6sip5=iUjGiSjIiw7eiWhoiBi/lejF86i+3Njti/jv6!lf2rhijzjB0ni lnj1lWj3i%l)6d6=jzjHjej.8t04lxlLjm6oirjb6{lGl_6slJj#i!82llj5lH8?jol;3JiCl:jqjjiJlz6I6n2Y8^7zjS5(jVl3lYl619j!lcmtlr5Sj-j$jKj:6ge?949j9ldQ0J1rgKe39#aPdreJeeg.1Bf11`do9Nd3l#kJb?gvhA05ankpdd751HankYbXb@0TbBk%4$2}471 k+22k-6Ik/hP2J0mhSaZk@2Lk_1q4,h!k~h%cwjPl2l,l44~l67Te*cblbl%5eldiEjqlim8lqi2nq8DmhjO8?mljRlD3*jT5)5+mri@jzmvnq0vj(l=iQnyniiil/lFmbjgl@8LiNiFmci/menG47m2l|nUnwlAjn76l|n+lj7J5:iqn,i#n_n;iVizl|lNj)h^87mg4rmF1U95j^0kd=0@0_0{0d04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)