diff --git a/representation_construits/chapitre_1/tp/anagrammes.md b/representation_construits/chapitre_1/tp/anagrammes.md index 9adb616..17a1fdb 100644 --- a/representation_construits/chapitre_1/tp/anagrammes.md +++ b/representation_construits/chapitre_1/tp/anagrammes.md @@ -1,6 +1,6 @@ -# Préliminaire +## Préliminaires -## Méthode `split` sur les chaînes de caractères +### Méthode `split` sur les chaînes de caractères 1. Supposons que la variable ``s`` a pour valeur la chaîne ``"la méthode split est parfois bien utile"``. Quelles sont les réponses fournies par Python pour les expressions suivantes ? @@ -14,7 +14,7 @@ 2. Déduisez-en une description précise de ce que fait la méthode ``split``. -## Méthode `join` sur les chaînes de caractères +### Méthode `join` sur les chaînes de caractères 3. Supposons que la variable ``l`` est définie par ``l = s.split()`` où ``s`` est la chaîne ``"la méthode split est parfois bien utile"``. Quelles sont les réponses fournies par Python pour les expressions suivantes ? @@ -29,7 +29,7 @@ * ``"".join()`` * ``"".join([])`` * ``"".join([1,2])`` - + 4. Déduisez-en une description précise de ce que fait la méthode ``join``. @@ -75,8 +75,8 @@ Il n'y a pas de méthode ``sort`` pour les chaînes de caractères. Pour cela, vous pourrez utiliser avec profit la fonction de conversion ``list``, la méthode ``sort`` des listes et la méthode ``join`` des chaînes. - -# Anagrammes + ------------- +### Anagrammes Selon le dictionnaire « Le Petit Robert », le mot anagramme a pour définition : mot obtenu par transposition des lettres d’un autre mot. @@ -88,7 +88,7 @@ Vous allez écrire plusieurs versions d’un prédicat nommé `sont_anagrammes` -1. Réalisez une première version du prédicat `sont_anagrammes` en utilisant la fonction `sort` que vous avez réalisée dans le préliminaire. +- Réalisez une première version du prédicat `sont_anagrammes` en utilisant la fonction `sort` que vous avez réalisée dans le préliminaire. À chaque chaîne de caractères on peut associer une table donnant le nombre d'occurrences de chacun de ses caractères. Par exemple, voici la table pour la chaîne `errance` : @@ -108,7 +108,7 @@ Une telle table peut être représentée en Python par un dictionnaire. Sur notr Deux mots sont anagrammes l'un de l'autre si est seulement s'ils ont la même table d'occurrences. -2. Réalisez une seconde version de ce prédicat qui construit un tel dictionnaire pour chacune des deux chaînes et les compare. +- Réalisez une seconde version de ce prédicat qui construit un tel dictionnaire pour chacune des deux chaînes et les compare. # Trouver des anagrammes Il s'agit maintenant de trouver dans un lexique donné l'ensemble des anagrammes d'un mot donné. @@ -117,8 +117,7 @@ Vous allez réaliser deux versions d'une fonction nommée `anagrammes` qui donne Le lexique que vous allez utiliser est la liste de mots `LISTE_MOTS` définie dans le fichier [liste_7776_mots.py](../phrases_de_passe/liste_7776_mots.py). - -1. Réalisez une première version de la fonction `anagrammes` qui parcourt le lexique entier et utilise l'une ou l'autre des deux versions de la fonction `sont_anagrammes` réalisée précédemment. +- Réalisez une première version de la fonction `anagrammes` qui parcourt le lexique entier et utilise l'une ou l'autre des deux versions de la fonction `sont_anagrammes` réalisée précédemment. La deuxième méthode consiste à chercher la liste des anagrammes dans un dictionnaire d'anagrammes. Les clés d'un tel dictionnaire sont des chaînes de caractères dont les caractères sont rangés dans l'ordre alphabétique croissant, et les valeurs associées sont des listes de mots du lexique anagrammes de la clé. Voici quelques exemples d'association clé/valeur qu'on peut obtenir avec le lexique proposé ci-dessus : @@ -132,7 +131,6 @@ La deuxième méthode consiste à chercher la liste des anagrammes dans un dicti Si on dispose d'un tel dictionnaire, lorsqu'on veut chercher la liste des anagrammes d'un mot donné, il suffit de calculer la clé correspondante à ce mot et de chercher la valeur associée à cette clé dans le dictionnaire. Si la clé n'est pas présente dans le dictionnaire, cela signifie que le lexique ne contient aucune anagramme du mot. -2. Construisez ce dictionnaire d'anagrammes. +- Construisez ce dictionnaire d'anagrammes. - -3. Réalisez la seconde version de la fonction `anagrammes` en utilisant le dictionnaire que vous avez construit. +- Réalisez la seconde version de la fonction `anagrammes` en utilisant le dictionnaire que vous avez construit. diff --git a/representation_construits/chapitre_1/tp/correction.py b/representation_construits/chapitre_1/tp/correction.py old mode 100644 new mode 100755 index 64f612f..3f5f9be --- a/representation_construits/chapitre_1/tp/correction.py +++ b/representation_construits/chapitre_1/tp/correction.py @@ -5,6 +5,7 @@ # License : CC-BY-NC-SA ''' Module de génération de Drapeaux ''' + import sys, copy from paint import NOIR, ROUGE, VERT, JAUNE, BLEU, CYAN, BLANC, dessiner diff --git a/representation_construits/chapitre_1/tp/liste_7776_mots.py b/representation_construits/chapitre_1/tp/liste_7776_mots.py old mode 100644 new mode 100755 index 9ffe814..7cf2e9e --- a/representation_construits/chapitre_1/tp/liste_7776_mots.py +++ b/representation_construits/chapitre_1/tp/liste_7776_mots.py @@ -8,6 +8,7 @@ """ + LISTE_MOTS = ( 'montes', 'troue',