Informatique, D.S. 2 :

Documents pareils
Initiation à la programmation en Python

Représentation d un entier en base b

Algorithmes récursifs

Cours d algorithmique pour la classe de 2nde

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

STAGE IREM 0- Premiers pas en Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

V- Manipulations de nombres en binaire

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.


TP 1. Prise en main du langage Python

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Découverte de Python

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Algorithme. Table des matières

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Algorithmique et Programmation, IMA

1 Introduction au codage

Bases de programmation. Cours 5. Structurer les données

Initiation à l algorithmique

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Définitions. Numéro à préciser. (Durée : )

1 Recherche en table par balayage

Conversion d un entier. Méthode par soustraction

Algorithmique et programmation : les bases (VBA) Corrigé

Licence Sciences et Technologies Examen janvier 2010

CORRECTION EXERCICES ALGORITHME 1

Cours d initiation à la programmation en C++ Johann Cuenin

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Les chaînes de caractères

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

Codage d information. Codage d information : -Définition-

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Programmation avec Xcas ou Python

DOCM Solutions officielles = n 2 10.

Logiciel de Base. I. Représentation des nombres

Probabilités sur un univers fini

Statistiques Descriptives à une dimension

Qu est-ce qu une probabilité?

Algorithmique I. Algorithmique I p.1/??

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Architecture des Systèmes d Information Architecture des Systèmes d Information

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Présentation du langage et premières fonctions

Programmation C. Apprendre à développer des programmes simples dans le langage C

Corrigé des TD 1 à 5

Compression Compression par dictionnaires

Informatique Générale

Représentation des Nombres

Java Licence Professionnelle CISII,

Chapitre 2 Devine mon nombre!

TP : Gestion d une image au format PGM

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

UE Programmation Impérative Licence 2ème Année

Tp 1 correction. Structures de données (IF2)

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

IV- Comment fonctionne un ordinateur?

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

EVALUATION Nombres CM1

Algèbre binaire et Circuits logiques ( )

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

TD3: tableaux avancées, première classe et chaînes

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Chapitre VI- La validation de la composition.

Utilisation d objets : String et ArrayList

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

MATHÉMATIQUES DISCRÈTES (4) CRYPTOGRAPHIE CLASSIQUE

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Activités numériques [13 Points]

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

DM 1 : Montre Autoquartz ETA

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Microprocesseur + Logiciel

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Examen Médian - 1 heure 30

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Corrigé du baccalauréat S Pondichéry 12 avril 2007

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Organigramme / Algorigramme Dossier élève 1 SI

MIS 102 Initiation à l Informatique

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Exercices sur les interfaces

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Transcription:

Informatique, D.S. 2 : 1 Questions de cours a) Comment fabriquer un liste t contenant 26 entrées, toutes nulles? b) Avec quel symbole obtient-on en Python le reste de la division euclidienne de a par b? c) Ecrire une fonction Rectangle qui prend comme arguments une fonction f, des nombres a,b et un entier n et qui renvoie le résultat du calcul d une valeur approchée de b a f par la méthode des rectangles en subdivisant [a, b] en n intervalles, i.e. en calculant n aires de rectangles. d) Que fait la fonction mystere suivante, qui prend en arguments deux entiers a et b? On expliquera pourquoi cette fonction s arrête et pourquoi elle fait ce qu on prétend. On précisera aussi ce que signifie la deuxième ligne du code. def mystere(a,b): if (isinstance(a,int)==false) or (isinstance(b,int)==false): # qu es aco? raise ValueError("Variables d entrées incorrectes") a=abs(a) b=abs(b) while (a!=0) and (b!=0): if a<=b: b=b-a if b<a: a=a-b if a==0: return b if b==0: return a e) Quel est l intérêt d un raise ValueError("données non correctes") par rapport à un simple print("données non correctes")? f) Ecrire une fonction maxi qui prend en entrée une liste d entiers et renvoie la valeur maximale des entiers dans cette liste et le premier indice pour lequel cette valeur maximale est atteinte. 2 Codages de Cesar et Vigenère Le but de ce problème est de s intéresser à deux méthodes historiques de codages de texte. 2.1 Préliminaire : représentation d un texte par une liste de chiffres Par commodité, dans ce qui suit, on s intéresse à un texte (chaîne de caractères) écrit seulement avec les 26 lettres de l alphabet en minuscules, sans espace (oui je sais c est un peu contraignant... cf. fin du problème). Par commodité encore, on va remplacer ce texte par une liste de nombres comme suit : on va représenter a par 0, b par 1 etc jusqu à z par 25. Question 1 (attention à bien lire le complément UTF/Python ci-dessous (verso!) avant de répondre!) On veut fabriquer une fonction represente(texte) qui prend en argument une chaîne de caractères texte formée seulement avec les caractères correspondants aux 26 lettres de l alphabet en minuscule, et qui renvoie une liste, qu on appellera t dans la déf. de la fonction, dont les entrées correspondront aux chiffres représentant chacune des lettres. Un exemple valant mieux qu un long discours : 1

CONCOURS D ADMISSION 2008 ÉCOLE POLYTECHNIQUE CONCOURS D ADMISSION 2008 ÉPREUVE D INFORMATIQUE (Durée : 2 heures) FILIÈRES MP ET PC ÉCOLE SUPÉRIEURE DE PHYSIQUE ET CHIMIE INDUSTRIELLES FILIÈRES MP ET PC L utilisation des calculatrices ÉPREUVEn est D INFORMATIQUE pas autorisée pour cette épreuve. Le langage de programmation choisi(durée par le candidat : 2 heures) doit être spécifié en tête de copie. >>> represente( abcdezyx ) [0, 1, 2, 3, 4, L utilisation 25, 24, 23] des calculatrices n est??? pas autorisée pour cette épreuve. Le langage de programmation choisi par le candidat doit être spécifié en tête de copie. Complément : une commande Python Ave Cesar essentielle (zud bdrzq) pour pouvoir faire la question 1 : En UTF, les lettres a,b,c... sont codées par les nombres 97,98, 99 etc. La commande Python??? ordon s applique cherche à crypter une chaîne un texte contenant t de longueur une lettre n composé et renvoie de caractères le numéro en minuscules UTF de cette (soit 26 lettre. lettres Par exemple di érentes) : représentés par des entiers Ave compris Cesar entre (zud 0 et bdrzq) 25 (0 $ a, 1$ b,... 25 $ z). Nous ne >>>ord( a ) tenons pas compte des éventuels espaces. On cherche à crypter un texte t de longueur n composé de caractères en minuscules (soit 26 lettres 97 Ainsi, le texte ecolepolytechnique est représenté par le tableau suivant où la première ligne di érentes) représentés par des entiers compris entre 0 et 25 (0 $ a, 1$ b,... 25 $ z). Nous ne représente le texte, la seconde les entiers correspondants, et la troisième les indices dans le tableau t. tenons Maintenant pas compte vous des pouvez éventuels vraiment espaces. faire la question 1! e c o l e p o l y t e c h n i q u e N.B. Ainsi, Dans le toute la suite après cette question, toutes les entrées sorties des algorithmes 4 texte 2 14 ecolepolytechnique 11 4 15 14 11représenté 24 19 par4 le tableau 2 7 suivant 13 où 8 la16première 20 4ligne seront, par commodité, des listes de nombres et pas des chaînes de caractères. représente 0le texte, 1 2la seconde 3 4 les5entiers 6 correspondants, 7 8 9 et 10la troisième 11 12 les13indices 14 dans 15 le16 tableau 17 t. e c o l e p o l y t e c h n i q u e 2.2 Le codage 4 2de14Cesar 11 4 15 Codage 14 11 de24césar 19 4 2 7 13 8 16 20 4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Ce codage est le plus rudimentaire que l on puisse imaginer. Il a été utilisé par Jules César (et même auparavant) pour certaines de sescodage correspondances. de CésarLe principe est de décaler les lettres de l alphabet vers la gauche de 1 ou plusieurs positions. Par exemple, en décalant les lettres de 1 Ce codage est le plus rudimentaire que l on puisse imaginer. Il a été utilisé par Jules César (et position, le caractère a se transforme en z, leb en a,... le z en y. Le texte avecesar devient donc même auparavant) pour certaines de ses correspondances. Le principe est de décaler les lettres zudbdrzq. de l alphabet vers la gauche de 1 ou plusieurs positions. Par exemple, en décalant les lettres de 1 Question Question 1 Que donne le codage du texte maitrecorbeau utilisant un décalage 5? position, 2 : le Ecrire caractère une fonction a se transforme codagecesar(t,d) en z, leb en a, qui... prend le z en eny. arguments Le texte avecesar une listedevient t contenant donc des Question nombres dans 2 Écrire 0, 25 la fonction et un entier codagecesar(t, d et qui retourne n, d) quiune prend liste ende arguments même taille le tableau que t t, mais sa longueur n et un entier d ; et qui retourne un tableau de même taille que t contenant le texte t décalé dont zudbdrzq. les entrées sont décalées de d positions. Par Question exemple1 Que donne le codage du texte maitrecorbeau en utilisant un décalage de 5? de d positions. >>> Question codagecesar([1,2,24,0],2) Question 2 Écrire la fonction codagecesar(t, n, d) qui prend en arguments le tableau t, sa longueur 0, 22, n et24] un entier d ; et qui retourne un tableau de même taille que t contenant le texte t décalé 3 Écrire de même la fonction decodagecesar(t, n, d) prenant les mêmes arguments mais [25, qui réalise le décalage dans l autre sens. de d positions. Pour réaliser ce décodage, il faut connaître la valeur du décalage. Une manière de la déterminer Question Question 3 : 3Ecrire Écrireune de même fonction la fonction decodagecesar(t,d) prenant n, d) prenant les mêmes les mêmes arguments arguments mais mais qui réalise automatiquement le décalage dans estl autre d essayer sens. de deviner cette valeur. L approche la plus couramment employée qui réalise le décalage dans l autre sens. est de regarder la fréquence d apparition de chaque lettre dans le texte crypté. En e et, la lettre Pour réaliser ce décodage, il faut connaître la valeur du décalage. Une manière de la déterminer la plus fréquente dans un texte su samment long en français est la lettre e. automatiquement Question 4 Écrire est la fonction d essayer de deviner cette valeur. L approche la plus couramment employée frequences(t0,n) qui prend en argument un tableau t 0 de taille n est de regarder la fréquence d apparition de chaque lettre dans le texte crypté. En e et, la lettre représentant le texte crypté ; et qui retourne un tableau de taille 26 dont la case d indice i contient la plus fréquente dans un texte su samment long en français est la lettre e. le nombre d apparitions du nombre i dans t (0 6 i<26). Question Question 4 : Ecrire 4 Écrire une la fonction frequences(t0 fréquence(tc),n) qui prend en argument une tableau liste tc t 0 de contenant taille n le texte représentant crypté etlequi texte retourne crypté ; une et qui liste retourne de taille un tableau 26 dont delataille case26d indice dont la case i contient d indicelei contient nombre 1 d apparitions le nombredud apparitions i dans du nombre tc (pour i dans 0 i t < (026). 6 i<26). Par exemple : >>>tc=[25,3,4,1,4,4,2,24,25,1] 1 >>>print(frequence(tc)) [0, 2, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2] Question 5 : Ecrire une fonction decodageauto(tc) qui prend en argument une liste tc représentant le texte crypté (toujours des nombres dans 0, 25 ), et qui retourne le texte d origine en calculant la clé pour que la lettre e soit la plus fréquente dans le texte décrypté. N.B. On pourra utiliser la fonction maxi du 1. 2

Question 5 Écrire la fonction decodageauto(t0,n) qui prend en argument le tableau t 0 de taille n représentant le texte crypté ; et qui retourne le texte t d origine (en calculant la clé pour que la lettre e soit la plus fréquente dans le texte décrypté). Question 5 Écrire la fonction decodageauto(t0,n) qui prend en argument le tableau t 0 de taille n représentant le texte crypté ; et qui Codage retourne de le texte Vigenère t d origine (en calculant la clé pour que la 2.3 Codage de Vigenère lettre Au XVIème e soit lasiècle, plus fréquente Blaise de dans Vigenère le texte a modernisé décrypté). le codage de César très peu résistant de la manière suivante. Au lieu de décaler Codage toutes les de lettres Vigenère du texte de la même manière, on utilise un texte clé qui donne une suite de décalages. Au XVIème siècle, Blaise de Vigenère a modernisé le codage de César très peu résistant de la Prenons par exemple la clé concours. Pour crypter un texte, on code la première lettre en manière suivante. Au lieu de décaler toutes les lettres du texte de la même manière, on utilise un utilisant le décalage qui envoie le a sur le c (la première lettre de la clé). Pour la deuxième lettre, texte clé qui donne une suite de décalages. on prend le décalage qui envoie le a sur le o (la seconde lettre de la clé) et ainsi de suite. Pour la Prenons par exemple la clé concours. Pour crypter un texte, on code la première lettre en huitième lettre, on utilise le décalage a vers s, puis, pour la neuvième, on reprend la clé à partir utilisant le décalage qui envoie le a sur le c (la première lettre de la clé). Pour la deuxième lettre, de sa première lettre. Sur l exemple ecolepolytechnique avec la clé concours, on obtient : (la on prend le décalage qui envoie le a sur le o (la seconde lettre de la clé) et ainsi de suite. Pour la première ligne donne le texte, la seconde le texte crypté et la troisième la lettre de la clé utilisée huitième lettre, on utilise le décalage a vers s, puis, pour la neuvième, on reprend la clé à partir pour le décalage) de sa première lettre. Sur l exemple ecolepolytechnique avec la clé concours, on obtient : (la première ligne donne e c le o texte, l la e seconde p o le l texte y crypté t e et c la troisième h n i la lettre q u de e la clé utilisée pour le décalage) g q b n s j f d a h r e v h z i w s c o n c o u r s c o n c o u r s c o e c o l e p o l y t e c h n i q u e Question Question 6 : Ecrire 6 Donner une le fonction codage codagevigenere(t,c) du texte becunfromage en qui utilisant prend comme la clé dearguments codage jean. une liste g q b n s j f d a h r e v h z i w s d entiers t représentant Question 7 Écrire c le la o texte fonction n à c crypter codagevigenere(t, o u et r une s liste c d entiers n, oc, k) n qui c servant prend o u au comme r codage sarguments c et qui o retourne un tableau une liste contenant le texte crypté, qu on appellera t par la suite. t de taille n représentant le texte à crypter, et un tableau d entiers c de longueur k donnant la clé Question 6 Donner le codage du texte becunfromage en utilisant la clé de codage jean. servant au codage ; et qui retourne un tableau de taille n contenant le texte crypté t 0. 2.4 Question Suite seulement 7 Écrire la fonction pourcodagevigenere(t, ceux qui visent Maintenant, on suppose disposer d un texte t 0 n, c, l option k) qui prendinfo comme! arguments un tableau assez long crypté par la méthode de Vigenère, Si t et vous de taille on voulez n représentant veut retrouver faire cesle questions le texte texte t d origine. en à crypter, D.S Pour : assurez et un tableau cela, vous on doit que d entiers trouver tout ce c de laqui longueur clé précèdek c ayant servi est donnant juste au codage.! la clé servant au codage ; et qui retourne un tableau de taille n contenant le texte crypté t On procède en deux temps : 1) détermination de la longueur k de la clé c, 2) détermination 0. des Maintenant, on suppose disposer d un texte t lettres composant c. 0 assez long crypté par la méthode de Vigenère, et on veut retrouver le texte t d origine. Pour cela, on doit trouver la clé c ayant servi au codage. La première étape est la plus di cile. On remarque que deux lettres identiques dans t espacées On procède en deux temps : 1) détermination de la longueur k de la clé c, 2) détermination des de ` k caractères (où ` est un entier et k la taille de la clé) sont codées par la même lettre dans lettres t 0 composant c.. Mais cette condition n est pas su sante pour déterminer la longueur k de la clé c puisque des La première étape est la plus di cile. répétitions peuvent apparaître dans t 0 On remarque que deux lettres identiques dans t espacées sans qu elles existent dans t. Par exemple, les lettres t et n de ` k caractères (où ` est un entier et k la taille de la clé) sont codées par la même lettre dans sont toutes deux codées par la lettre h dans le texte crypté à partir de ecolepolytechnique avec t concours 0. Mais cette condition n est pas su sante pour déterminer la longueur k de la clé c puisque des comme clé. Pour éviter ce problème, on recherche les répétitions non pas d une lettre répétitions peuvent apparaître dans mais de séquences de lettres dans t 0 t 0 sans qu elles existent dans t. Par exemple, les lettres t et n puisque deux séquences de lettres répétées dans t, dont les sont toutes deux codées par la lettre h dans le texte crypté à partir de ecolepolytechnique avec premières lettres sont espacées par ` k caractères, sont aussi cryptées par deux mêmes séquences concours dans t 0 comme clé. Pour éviter ce problème, on recherche les répétitions non pas d une lettre. mais de séquences de lettres dans t Dans la suite de l énoncé, on ne considère 0 puisque deux séquences de lettres répétées dans t, dont les que des séquences de taille 3 en supposant que toute premières lettres sont espacées par ` k caractères, répétition d une séquence de 3 lettres dans t 0 sont aussi cryptées par deux mêmes séquences provient exclusivement d une séquence de 3 lettres dans t répétée 0. dans t. Ainsi, la distance séparant ces répétitions donne des multiples de k. Dans la suite de l énoncé, on ne considère que des séquences de taille 3 en supposant que toute La valeur de k est obtenue en prenant le PGCD de tous ces multiples. Si le nombre de répétitions répétition d une séquence de 3 lettres dans t est su sant, on a de bonnes chances d obtenir 0 provient exclusivement d une séquence de 3 lettres la valeur de k. On suppose donc que cette assertion répétée dans t. Ainsi, la distance séparant ces répétitions donne des multiples de k. est vraie. La valeur de k est obtenue en prenant le PGCD de tous ces multiples. Si le nombre de répétitions est su sant, on a de bonnes chances d obtenir la valeur de k. On suppose donc que cette assertion 2 est vraie. N.B Pour la question suivante On suppose qu on dispose déjà d une fonction pgcd(a,b) qui 2 renvoie le pgcd des entiers a et b. Question 7 : Ecrire une fonction pgcddistances(tc,i) qui prend en arguments le texte crypté tc (liste d entiers) et un entier i tels que 0 i n 2 où n est la longueur du texte, où i est l indice d une lettre dans tc, et qui retourne le pgcd des distances entre les répétitions de la séquence de 3

3 lettres (t[i],t[i+1],t[i+2]) dans la suite du texte (t[i+3],t[i+4],...,t[n-1]). Cette fonction retourne 0 s il n y a pas de répétitions. Question 8 : Ecrire la fonction longueurcle(tc) qui renvoie la longueur de la clé de codage du texte crypté tc. Question 9 : Une fois la longueur de la clé connue, trouver un algorithme permettant de retrouver chacune des lettres de la clé. 3 T.P. 7 vacances : une utilisation plus commode On voudrait utiliser les fonctions précédentes de manière beaucoup plus souple. Pour cela, on aimerait pouvoir lire un fichier texte et le transformer en fichier codé. C est possible avec les commandes d ouvertures et d écritures données au chapitre 7. Reste à savoir comment obtenir efficacement les numéros unicode d un caractère. J ai déjà parlé plus haut de ord. Il faut mentionner aussi chr() qui prend comme argument un entier et affiche le caractère unicode correspondant à cet entier >>> chr(65) A Néanmoins, il faudra délimiter les caractères qui vous autorisez à être présents dans votre texte... car le principe du codage est bien sûr qu on sait exactement combien on a de caractères. Comme il y a des trous dans le unicode (essayez print(chr(i))) pour i dans une boucle de votre choix, cela demande un peu de recherche pour savoir de quoi vous aurez vraiment besoin... 4

Corrigé du D.S. 2 1 QdC a) t=[0]*26 b) cf T.P. 6. c) Le isinstance(a,int) teste si l objet a est une instance de la classe des entiers... autrement dit si a est du type int. d) Le raise ValueError est reconnu comme une erreur par l interpréteur Python. Il permet d interrompre le déroulement d un programme qui appellerait cette fonction. e) Cf. C.R. T.P. 3 première partie. 2 Codage de César et Vigenère 2.1 Représentation d un texte par une liste de chiffre def transforme(t): l=[] for i in t: l.append(ord(i)-97) return l 2.2 Codage de César Q2 et Q3 def codagecesar(t,d): tt=[] for i in range(len(t)): tt.append((t[i]-d)%26) return tt def decodagecesar(t,d): return codagecesar(t,-d) Q4 def frequence(tc): freq=[0]*26 for lettre in tc: # on parcourt les valeurs de tc freq[lettre]+=1 # pour chaque valeur de lettre on incrémente de 1 la valeur d indice co return freq Q5 def decodageauto(tc): freq=frequence(tc) # on récupère le tableau des fréquences (max,i_max)=maxi(freq) # on va s interesser à l indice max dans freq d=(4-i_max)%26 # on définit le décalage comme l écart modulo 26 # entre 4 l indice de e et i_max, mais il ne faut pas se tromper de sens. # si i_max=2 par exemple on veut que d=2 avec la déf. donnée du codage print(d) return decodagecesar(tc,d) Un exemple : 5

>>>texte= untexteunpeulongdevracompterunemajoritedeevousnelecroyezpas >>> L=transforme(texte) >>> frequence(l) [3, 0, 2, 2, 12, 0, 1, 0, 1, 1, 0, 2, 2, 5, 5, 3, 0, 4, 2, 4, 5, 2, 0, 1, 1, 1] 2.3 Codage de Vignère Q6 def codagevignere(t,c): tr=[] for i in range(len(t)): tr.append((t[i]+c[i%len(c)])%26) return tr 6