Feuille d’exercices 3 – avancé#
Avertissement
Ces exercices sont prévus pour les étudiant·e·s ayant déjà réussi la feuille d’exercices « classiques ».
Exercice 8 : anagrammes#
Deux mots sont appelés des anagrammes s’ils sont composés d’exactement les mêmes lettres (comptées avec leur multiplicité). Par exemple :
« juste » et « sujet » sont des anagrammes
« cannes » et « encas » ne sont pas des anagrammes, car la lettre « n » apparaît 2 fois dans « cannes » et seulement une fois dans « encas ».
Question 1. Écrire une fonction anagramme(mot1, mot2) qui prend en entrée deux mots sous la forme de chaînes de caractères, et qui teste si ces deux mots sont l’anagramme l’un de l’autre.
# Votre réponse ici
Question 2. Testez votre fonction avec les paires de mots suivantes :
« niche » et « chien »
« calcul » et « formel »
« anna » et « naan »
« sagemath » et « sagemath »
« garage » et « rage »
« doree » et « dorer »
# Votre réponse ici
La relation « être l’anagramme l’un de l’autre » est une relation d’équivalence (vous pouvez le vérifier mathématiquement si vous le souhaitez). On peut donc essayer d’identifier les différentes « classes d’anagrammes » dans une liste de mots.
Question 3. Écrire une fonction classe_anagrammes(liste) qui prend en entrée une liste de mots liste, et qui retourne une liste des classes d’anagrammes de liste.
Puis, tester sur la liste :
L = ["niche", "casser", "carnet", "crasse", "ressac", "sagemath", "nectar", "chien"]
# Votre réponse ici
Exercice 9 : chiffrement ROT13#
Le chiffrement ROT13 est un chiffrement « jouet » (c’est-à-dire, à ne pas utiliser sérieusement) qui fonctionne sur des textes contenant uniquement des lettres de l’alphabet en majuscules. Ce chiffrement s’effectue par substitution : on remplace les lettres du message clair en des lettres du message chiffré selon la règle suivante :
caractère "clair" : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
caractère "chiffré" : N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
Par exemple, le caractère J est remplacé par le caractère W.
Question 1 : Écrire le dictionnaire de substitution de ROT13, c’est-à-dire le dictionnaire SUB qui a pour clés les caractères « clairs » allant de A à Z, et qui a pour valeur correspondant à un caractère clair, le caractère chiffré correspondant. Par exemple, il faut que SUB['J'] soit égal à W.
# Votre réponse ici
Question 2 : Écrire une fonction chiffre_rot13(texte) qui prend en entrée un texte formé uniquement de caractères allant de A et Z, et qui retourne le chiffré correspondant par ROT13.
# Votre réponse ici
Question 3 : Écrire la fonction de déchiffrement dechiffre_rot13(chiffre) qui « inverse » le chiffrement, c’est-à-dire qui prend en entrée un texte chiffré par ROT13, et qui retourne le texte clair correspondant. Puis, vérifier que le déciffrement d’un chiffré donne le message d’origine.
# Votre réponse ici
Question 4 : Déchiffrer le cryptogramme SRYVPVGNGVBAF.
# Votre réponse ici
Exercice 10 : questions avancées sur les listes#
Question 1. Écrire une fonction plus_grande_plage(L) qui prend en entrée une liste d’éléments L, et qui retourne la taille de la plus grande série d’éléments identiques consécutifs (une telle série est appelée une plage). Par exemple, pour la liste L = [0, 1, 1, 1, 3, 3, 2, 3, 3, 3, 3, 4, 0], la fonction retournera \(4\), car la plus grande série d’éléments identiques consécutifs est de taille \(4\) (c’est une série d’entiers qui valent \(3\)).
# Votre réponse ici
Question 2. Écrire une fonction troisieme_plus_petit(L) qui prend en entrée une liste d’entiers L, et qui retourne le troisième plus petit entier de la liste. Par exemple, pour la liste L = [1, -8, -4, 5, 0, 6, -8, 2], la fonction retournera \(-4\). Si la liste a strictement moins de \(3\) éléments, retourner un message d’erreur.
# Votre réponse ici