TP2 Mise en fonctionnement de Anagrammes phrase

Tout est beaucoup plus facile quand on a bien dormi et bien mangé
This commit is contained in:
Geoffrey Frogeye 2015-02-09 13:21:21 +01:00
parent ddc3853174
commit f2216cc90b

View file

@ -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()