Le texte ci dessous a été crypté en utilisant un décalage de lettres (« code de César »). En vous aidant de la page http://lama.univ-savoie.fr/~hyvernat/substitution.php, décryptez le...
(Il faut utiliser l'option « codage de César » de la page...)
R'thi jc vpgh, xa gtcigt spch jc rpué, ti eadju...
L'instruction pass
de Python est une instruction spéciale qui ... ne fait rien.
Estimez la durée d'execution de
for i in range(1000000): # un million pass
for i in range(10000000): # dix millions pass
for i in range(100000000): # cents millions pass
En sachant qu'il y a 26! = 1*2*3* ... *25 * 26 permutations possibles des vingt-six lettres de l'alphabet, estimez la durée d'éxécution de
from itertools import permutations from string import ascii_lowercase for p in permutations(ascii_lowercase): pass
Utilisez l'interprète Python pour faire vos calculs...
Qu'en pensez-vous ?
En utilisant la page http://lama.univ-savoie.fr/~hyvernat/substitution.php, décryptez le texte suivant.
Zp ! lml ! i'rev ql brq imqkv, srqlr pmaar ! Ml bmqozxv jxkr...Mp ! Jxrq !...txrl jre ipmere rl emaar... Rl ozkxzlv nr vml, -bzk rfrabnr, vrlrw : Zdkreexh: "Amx, amlexrqk, ex s'zozxe ql vrn lrw Xn hzqjkzxv eqk-nr-ipzab yqr sr ar n'zabqvzeer !" Zaxizn: "Azxe xn jmxv vkrabrk jzle omvkr vzeer ! Bmqk tmxkr, hzxvre-omqe hztkxyqrk ql pzlzb !" Jreikxbvxh: "I'rev ql kmi !...i'rev ql bxi !. . .i'rev ql izb ! Yqr jxe-sr, i'rev ql izb ?...I'rev qlr bélxleqnr !" Iqkxrqf: "Jr yqmx erkv irvvr mtnmldqr izbeqnr ? J'éikxvmxkr, amlexrqk, mq jr tmîvr à ixerzqf ?" Dkzixrqf: "Zxarw-omqe à ir bmxlv nre mxerzqf Yqr bzvrklrnnrarlv omqe omqe bkémiiqbâvre Jr vrljkr ir brkipmxk à nrqk brvxvre bzvvre ?"
Comme dernier exemple, essayez de décryptez le texte suivant.
inb HqgnwMpf QMwighI JqM Juh thtuwwb Wgnb wugg dF gqg iMnFdFkhI huWg taMF gqMhg FMg dFongstgFg MppuhdMFh JqgF qg Juh ta uww FdkqgI Juh hguggl ug gqg cngufouhg gucwgb d hgMMl taMF gqg qgungq-ntk uFl adpfgl ta gqg hgdpf Jqdpq Mtn WdhdgMn qul wgog cgqdFl qdi gqg Fdkqg cgoMngb dg Juh u odFgI gqdpf adgpg Mo JMMlI ctwcMth-qgulglI Mo gqg hMng Jqdpq dh fFMJF uh u xAgFuFk wuJbgnbx Lthg tFlgn gqg qgul Juh u cnMul hdwWgn cuFl Fgunwb uF dFpq upnMhhb xGM Luigh iMngdignI ibnbPbHbI onMi qdh ondgFlh Mo gqg PbPbQbIx Juh gFknuWgl taMF dgI Jdgq gqg lugg x1884bx dg Juh lthg htpq u hgdpf uh gqg Mwl-ouhqdMFgl ouidwb anupgdgdMFgn thgl gM punnb-ldkFdodglI hMwdlI uFl nguhhtndFkb
Le premier à m'envoyer la solution par email (Pierre.Hyvernat@univ-savoie.fr) gagnera un paquet de bonbons !
Programmez une fonction
def substitution(texte, subst, decode=False): """Code ou décode le texte en utilisant la substitution. "substitution" est une chaine contenant les 26 lettres majuscules dans l'ordre où il faut les substituer : par exemple, pour remplacer 'A' par 'T' et 'B' par 'U', "subst" commencera par "TU...". """
Vous pourrez pour ceci utiliser la méthode find
qui permet de trouver la position de la première occurrence d'un caractère dans une chaine :
>>> "Salut !".find("S") 0 >>> "Salut !".find("t") 4 >>> "Salut !".find("T") -1