From f2216cc90bd9975332040f33d654c18622837655 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Mon, 9 Feb 2015 13:21:21 +0100 Subject: [PATCH] TP2 Mise en fonctionnement de Anagrammes phrase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tout est beaucoup plus facile quand on a bien dormi et bien mangé --- S2/TP2/tp2.py | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/S2/TP2/tp2.py b/S2/TP2/tp2.py index ffe964a..f606fe0 100644 --- a/S2/TP2/tp2.py +++ b/S2/TP2/tp2.py @@ -434,27 +434,27 @@ print('La première méthode à mis %s secondes, et la deuxième %s secondes' % partie('Phrases d\'anagrammes') # Geoffrey question(1) - - -def arbre_vers_liste(arbre): - # [[1, [3, [4]]], [2, [3, [4]]]] ⇒ [[1, 3], [1, 4], [2, 3], [2, 4]] - print(arbre) +def arbre_vers_liste(arbre, precede): + # dict → list + # TODO Docstring + # {1: [3, 4], 2: [3, 4]} ⇒ [[1, 3], [1, 4], [2, 3], [2, 4]] possibilites = [] - # for i in arbre: - + for i in arbre: + if type(arbre[i]) == dict: + possibilites = possibilites + arbre_vers_liste(arbre[i], precede + [i]) + elif arbre[i] == None: + possibilites = possibilites + [precede + [i]] return possibilites def annagrammes_arbre(liste): # TODO Docstring + # [1, 2] ⇒ {1: [1, 3], 2: [2, 4]} anagrammesPremier = anagrammes(liste[0]) if len(liste) > 1: # Si il y a des anagrammes après - res = [] - for i in anagrammesPremier: - res.append([i, annagrammes_arbre(liste[1:])]) - return res + return dict((i, annagrammes_arbre(liste[1:])) for i in anagrammesPremier) else: - return anagrammesPremier + return dict((i, None) for i in anagrammesPremier) def developpement(mots): @@ -469,10 +469,15 @@ def annagrammes_phrase(phrase): # TODO Docstring mots = phrase.split() anagrammesArbre = annagrammes_arbre(mots) - annagrammesMots = [anagrammes(i) for i in mots] - return arbre_vers_liste(anagrammesArbre) + # print(anagrammesArbre) # DEBUG + # annagrammesMots = [anagrammes(i) for i in mots] + liste = arbre_vers_liste(anagrammesArbre, []) + # print(liste) # DEBUG + return [' '.join(i) for i in liste] -print(annagrammes_phrase('orange orange orange')) # DEBUG + +print(annagrammes_phrase('détruirions épargnions')) # DEBUG +# print(arbre_vers_liste({1: None, 3: {5: None}}, [])) # DEBUG partie('Sauvegarde et récupération') @@ -502,6 +507,6 @@ def charger_dico(): ANAGRAMMES = dict() f = open(ANAGRAMMES_FICHIER, 'r') for l in f: - decoupe = ':'.split(str(f)) + decoupe = ':'.split(str(l)) ANAGRAMMES[decoupe[0]] = decoupe[1:] f.close()