diff --git a/tp1.py b/tp1.py index 5a7f536fc1f35f3ff70410a729e85fc0d31f04cf..96798db8d6df8110eff17eeb17de553e09f16491 100644 --- a/tp1.py +++ b/tp1.py @@ -157,7 +157,114 @@ def sont_anagrammes4(s1:str,s2:str)->bool: return False return True +# il y'a 139719 mots dans ce lexique +# non ce lexique ne contient pas de doublons car len(LEXIQUE)==len(set(LEXIQUE)) + +from lexique import LEXIQUE +def anagrammes(mot: str) -> list[str]: + """ + Renvoie la liste des mots figurant dans le LEXIQUE qui sont des anagrammes de mot. + + Précondition: aucune + + Exemples: + + $$$ anagrammes('orange') + ['onagre', 'orange', 'orangé', 'organe', 'rongea'] + $$$ anagrammes('info') + ['foin'] + $$$ anagrammes('Calbuth') + [] + """ + res=[] + for elt in LEXIQUE: + + if len(mot) == len(elt) and sont_anagrammes4(elt,mot): + res.append(elt) + return res + +#2 liste des anagrammes du mot chien +# ['chien', 'chiné', 'niche', 'niché'] + + +# ANAGRAMMES D'UN MOT:seconde methode +#1 il n'est pas raisonnable de prendre les mots du lexique pour clés car plusieurs clés ne peuvent pas designer la meme valeur +# en effet ces mots du lexiques en representant les clés auront tous la meme valeur qui est le mot dont on cherche ces anagrammes + + +def cle(chaine:str)->str: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ cle('Orangé') + 'aegnor' + + """ + a=bas_casse_sans_accent(chaine) + b=sort(a) + return b + + + + +ANAGRAMMES={} +for mot in LEXIQUE: + if not(mot in ANAGRAMMES): + mot_anagrammes = anagrammes(mot) + for elt in mot_anagrammes: + ANAGRAMMES[elt] = mot_anagrammes + + + +def anagrammes2(mot:str)->list[str]: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ + """ + return ANAGRAMMES.get(mot,[mot]) + + + +#c'est la methode avec le dictionnaire la plus rapide +i=0 +ANAGRAMMES2={} +for mote in LEXIQUE: + i+=1 + if not(mote in ANAGRAMMES2): + mot_anagrammes2 = anagrammes(mote) + for elm in mot_anagrammes2: + ANAGRAMMES2[elm] = mot_anagrammes2 + if i==30: + break +def anagrammes3(mot:str)->list[str]: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ anagrammes3('chien') + ['chien', 'chiné', 'niche', 'niché'] + """ + return ANAGRAMMES2.get(mot,[mot]) + +def anagrammes_phrase(phrase:str)->list[str]: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ + """ + res=[] + mot=[] + liste=phrase.split(' ') + for elt in liste: + mot.append(anagrammes(elt)) + " ".join() + res+=mot + return res