2015-02-08 20:35:45 +01:00
# PREUD'HOMME Geoffrey
2015-01-26 23:06:46 +01:00
# BEAUSSART Jean-loup
2015-02-08 20:35:45 +01:00
# Donné le 27/01/2015
2015-01-26 23:06:46 +01:00
# TP2 Anagrammes - Dictionnaires
# http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp2_dictionnaires.html
def partie ( nom ) :
2015-02-09 12:07:20 +01:00
print ( ' \n ' , nom , ' = ' * len ( nom ) , sep = ' \n ' )
2015-01-26 23:06:46 +01:00
def section ( nom ) :
2015-02-09 12:07:20 +01:00
print ( ' \n ' , nom , ' - ' * len ( nom ) , sep = ' \n ' )
2015-01-26 23:06:46 +01:00
def question ( numero ) :
print ( ' \n *** ' , ' Question ' , numero , ' *** ' )
2015-02-03 10:47:19 +01:00
partie ( ' Quelques méthodes sur les listes et les chaînes ' ) # Geoffrey
2015-01-26 23:06:46 +01:00
2015-01-27 10:51:45 +01:00
section ( ' Méthode split ' )
2015-01-26 23:06:46 +01:00
question ( 1 )
2015-02-09 11:24:53 +01:00
print ( " >>> s = ' la méthode split est parfois bien utile ' " )
s = ' la méthode split est parfois bien utile '
print ( " >>> s.split ( ' ' ) " )
2015-02-09 12:04:12 +01:00
print ( s . split ( ' ' ) )
2015-02-09 11:24:53 +01:00
print ( " >>> s.split ( ' e ' ) " )
2015-02-09 12:04:12 +01:00
print ( s . split ( ' e ' ) )
2015-02-09 11:24:53 +01:00
print ( " >>> s.split ( ' é ' ) " )
2015-02-09 12:04:12 +01:00
print ( s . split ( ' é ' ) )
2015-02-09 11:24:53 +01:00
print ( " >>> s.split () " )
2015-02-09 12:04:12 +01:00
print ( s . split ( ) )
2015-02-09 11:24:53 +01:00
print ( " >>> s.split ( ' ' ) " )
print ( ' ValueError: empty separator ' )
print ( " >>> s.split ( ' split ' ) " )
2015-02-09 12:04:12 +01:00
print ( s . split ( ' split ' ) )
2015-01-27 10:50:06 +01:00
2015-01-26 23:06:46 +01:00
question ( 2 )
2015-02-09 17:10:31 +01:00
print ( ' La méthode `split` renvoie la liste des chaînes de la découpe de la chaîne sur laquelle est appliquée la fonction par la chaîne passée en argument (ou à défaut le caractères d \' espacement ' )
2015-01-26 23:06:46 +01:00
question ( 3 )
2015-01-27 10:50:06 +01:00
# TODO utf-8
# TODO en print
2015-01-26 23:06:46 +01:00
2015-02-09 11:24:53 +01:00
print ( " >>> s = ' la méthode split est parfois bien utile ' " )
s = ' la méthode split est parfois bien utile '
print ( " >>> s.split( ' ' ) " )
print ( s . split ( ' ' ) )
print ( ' >>> s ' )
2015-02-09 12:04:12 +01:00
print ( ' \' ' + s + ' \' ' )
2015-01-26 23:06:46 +01:00
2015-02-03 10:47:19 +01:00
print (
2015-02-08 20:35:45 +01:00
' De par cet exemple, on remarque que s reste la même chaîne de caractère, `split` ne modifie donc pas la chaîne de caractères à laquelle elle s \' applique (ce qui est logique vu le caractère non-mutable des chaînes de caractères ' )
2015-01-26 23:06:46 +01:00
section ( ' Méthode join ' )
question ( 1 )
2015-02-09 11:24:53 +01:00
print ( " >>> s = ' la méthode split est parfois bien utile ' " )
s = ' la méthode split est parfois bien utile '
print ( ' >>> l = s.split() ' )
l = s . split ( )
print ( ' >>> " " .join (l) ' )
2015-02-09 12:04:12 +01:00
print ( " " . join ( l ) )
2015-02-09 11:24:53 +01:00
print ( ' >>> " " .join (l) ' )
2015-02-09 12:04:12 +01:00
print ( " " . join ( l ) )
2015-02-09 11:24:53 +01:00
print ( ' >>> " ; " .join (l) ' )
2015-02-09 12:04:12 +01:00
print ( " ; " . join ( l ) )
2015-02-09 11:24:53 +01:00
print ( ' >>> " tralala " .join (l) ' )
2015-02-09 12:04:12 +01:00
print ( " tralala " . join ( l ) )
2015-02-09 11:24:53 +01:00
print ( ' >>> " \n " .join (l) ' )
2015-02-09 12:04:12 +01:00
print ( " \n " . join ( l ) )
2015-02-09 11:24:53 +01:00
print ( ' >>> " " .join (s) ' )
2015-02-09 12:04:12 +01:00
print ( " " . join ( s ) )
2015-02-09 11:24:53 +01:00
print ( ' >>> " ! " .join (s) ' )
2015-02-09 12:04:12 +01:00
print ( " ! " . join ( s ) )
2015-02-09 11:24:53 +01:00
print ( ' >>> " " .join () ' )
print ( ' TypeError: join() takes exactly one argument (0 given) ' )
print ( ' >>> " " .join ([]) ' )
2015-02-09 12:04:12 +01:00
print ( " " . join ( [ ] ) )
2015-02-09 11:24:53 +01:00
print ( ' >>> " " .join ([1,2]) ' )
print ( ' TypeError: sequence item 0: expected str instance, int found ' )
2015-01-27 11:03:08 +01:00
2015-01-26 23:06:46 +01:00
question ( 2 )
2015-02-03 10:47:19 +01:00
print (
' La méthode join concatène les chaînes de caractères contenues dans la liste passée en paramètre, en insérant entre deux la chaîne de caractère sur laquelle elle est appliquée. ' )
2015-01-27 11:03:08 +01:00
2015-01-26 23:06:46 +01:00
question ( 3 )
2015-02-09 11:24:53 +01:00
print ( ' >>> chaine = \' ! \' ' )
chaine = ' ! '
print ( ' >>> chaine.join(l) ' )
print ( chaine . join ( l ) )
print ( ' >>> chaine ' )
2015-02-09 12:04:12 +01:00
print ( ' \' ' + chaine + ' \' ' )
2015-01-27 11:03:08 +01:00
2015-02-03 10:47:19 +01:00
print (
2015-02-08 20:35:45 +01:00
' De par cet exemple, on remarque que chaine reste la même chaîne de caractères, `join` ne modifie donc pas la chaîne de caractères à laquelle elle s \' applique (ce qui est logique vu le caractère non-mutable des chaînes de caractères ' )
2015-01-27 11:03:08 +01:00
2015-01-26 23:06:46 +01:00
question ( 4 )
2015-02-03 10:47:19 +01:00
2015-01-27 11:03:08 +01:00
def join ( chaine , sequence ) :
2015-02-03 10:47:19 +01:00
# TODO Docstring
res = ' '
l = len ( sequence )
for i in range ( l ) :
res + = sequence [ i ]
if i < l - 1 :
res + = chaine
return res
2015-01-27 11:03:08 +01:00
print ( " >>> join( ' . ' , [ ' raymond ' , ' calbuth ' , ' ronchin ' , ' fr ' ]) " )
print ( join ( ' . ' , [ ' raymond ' , ' calbuth ' , ' ronchin ' , ' fr ' ] ) )
2015-01-26 23:06:46 +01:00
2015-01-27 11:17:24 +01:00
section ( ' Méthode sort ' )
2015-01-26 23:06:46 +01:00
question ( 1 )
2015-02-09 11:24:53 +01:00
print ( ' >>> l = list ( \' timoleon \' ) ' )
2015-02-09 12:04:12 +01:00
l = list ( ' timoleon ' )
2015-02-09 11:24:53 +01:00
print ( ' >>> l.sort() ' )
l . sort ( )
print ( ' >>> l ' )
print ( l )
2015-01-27 11:02:24 +01:00
2015-01-27 11:17:24 +01:00
print ( ' La méthode sort semble trier les lettres par ordre alphabétique ' )
2015-01-27 11:02:24 +01:00
2015-02-09 11:24:53 +01:00
print ( ' >>> s = " Je n \' ai jamais joué de flûte. " ' )
s = " Je n ' ai jamais joué de flûte. "
print ( ' >>> l = list (s) ' )
2015-02-09 12:04:12 +01:00
l = list ( s )
2015-02-09 11:24:53 +01:00
print ( ' >>> l.sort() ' )
l . sort ( )
print ( ' >>> l ' )
print ( l )
2015-01-27 11:02:24 +01:00
2015-02-03 10:47:19 +01:00
print (
' La méthode sort trie aussi les caractères spéciaux : ponctuation au début, accents à la fin ' )
2015-01-27 11:02:24 +01:00
2015-02-03 10:47:19 +01:00
print (
2015-02-09 17:08:27 +01:00
' Il semblerait que la méthode sort trie les caractères de s selon l \' ordre croissant de leur numéro de code ASCII (ou tout encodage utilisé) ' )
2015-01-27 11:02:24 +01:00
2015-01-26 23:06:46 +01:00
question ( 2 )
2015-02-09 11:24:53 +01:00
print ( ' >>> l = [ \' a \' , 1] ' )
l = [ ' a ' , 1 ]
print ( ' >>> l.sort() ' )
print ( ' TypeError: unorderable types: int() < str() ' )
2015-01-27 11:02:24 +01:00
2015-02-09 12:04:12 +01:00
print (
' On obtient une erreur comme quoi les types str et int ne sont pas ordonnable. En effet, il n \' est pas logique d \' ordonner des caractères avec des chiffres. ' )
print (
2015-02-09 17:08:27 +01:00
' Notons qu \' il aurait très bien pu être possible que cette méthode utilise le code des caractères, puisque celui-ci est de type int, comme c \' était le cas avec Python 2. ' )
2015-01-27 11:02:24 +01:00
2015-01-26 23:06:46 +01:00
section ( ' Une fonction sort pour les chaînes ' )
question ( 1 )
2015-02-03 10:47:19 +01:00
2015-01-27 11:25:40 +01:00
def sort ( chaine ) :
# TODO Docstring
# TODO On peut pas faire plus court ?
l = list ( chaine )
l . sort ( )
return ' ' . join ( l )
print ( ' >>> sort( \' timoleon \' ) ' )
print ( sort ( ' timoleon ' ) )
2015-01-26 23:06:46 +01:00
2015-01-27 11:35:54 +01:00
2015-02-03 10:47:19 +01:00
partie ( ' Anagrammes ' ) # Jean-loup
2015-01-26 23:06:46 +01:00
question ( 1 )
2015-02-03 10:47:19 +01:00
2015-02-03 10:43:38 +01:00
def sont_anagrammes1 ( chaine1 , chaine2 ) :
2015-02-09 17:29:39 +01:00
"""
Indique si chaine1 et chaine2 sont anagrammes
str , str → bool
CU : chaine1 et chaine2 sont des str
2015-01-27 11:02:24 +01:00
"""
2015-02-09 17:29:39 +01:00
assert ( type ( chaine1 ) == type ( chaine2 ) == str ) , ' chaine1 et chaine2 doivent être des str '
2015-01-27 11:02:24 +01:00
2015-02-09 17:29:39 +01:00
# Si la longueur est différente, ça ne peut pas être des anagrammes
2015-02-03 10:47:19 +01:00
if len ( chaine1 ) != len ( chaine2 ) :
2015-01-27 11:02:24 +01:00
return False
2015-02-03 11:43:40 +01:00
c1 = sort ( chaine1 )
c2 = sort ( chaine2 )
2015-01-27 11:02:24 +01:00
2015-02-03 11:43:40 +01:00
return c1 == c2
2015-01-27 11:02:24 +01:00
2015-01-26 23:06:46 +01:00
question ( 2 )
2015-02-03 10:47:19 +01:00
2015-01-27 11:02:24 +01:00
def sont_anagrammes2 ( chaine1 , chaine2 ) :
2015-02-09 17:29:39 +01:00
"""
Indique si chaine1 et chaine2 sont anagrammes
str , str → bool
CU : chaine1 et chaine2 sont des str
2015-01-27 11:02:24 +01:00
"""
2015-02-09 17:29:39 +01:00
assert ( type ( chaine1 ) == type ( chaine2 ) == str ) , ' chaine1 et chaine2 doivent être des str '
2015-01-27 11:02:24 +01:00
2015-02-09 17:29:39 +01:00
# Si la longueur est différente, ça ne peut pas être des anagrammes
2015-02-03 10:47:19 +01:00
if len ( chaine1 ) != len ( chaine2 ) :
2015-01-27 11:02:24 +01:00
return False
2015-02-03 10:47:19 +01:00
occu1 = dict ( ( i , chaine1 . count ( i ) ) for i in chaine1 )
occu2 = dict ( ( i , chaine2 . count ( i ) ) for i in chaine2 )
2015-01-27 11:02:24 +01:00
return occu1 == occu2
2015-01-26 23:06:46 +01:00
question ( 3 )
2015-02-03 10:47:19 +01:00
2015-02-03 10:43:38 +01:00
def sont_anagrammes3 ( chaine1 , chaine2 ) :
2015-02-09 17:29:39 +01:00
"""
Indique si chaine1 et chaine2 sont anagrammes
str , str → bool
CU : chaine1 et chaine2 sont des str
2015-01-27 11:02:24 +01:00
"""
2015-02-09 17:29:39 +01:00
assert ( type ( chaine1 ) == type ( chaine2 ) == str ) , ' chaine1 et chaine2 doivent être des str '
2015-01-27 11:02:24 +01:00
2015-02-09 17:29:39 +01:00
# Si la longueur est différente, ça ne peut pas être des anagrammes
2015-02-03 10:47:19 +01:00
if len ( chaine1 ) != len ( chaine2 ) :
2015-01-27 11:02:24 +01:00
return False
2015-02-03 10:43:38 +01:00
for i in chaine1 :
2015-01-27 11:02:24 +01:00
if chaine1 . count ( i ) != chaine2 . count ( i ) :
return False
return True
2015-01-26 23:06:46 +01:00
section ( ' Casse et accentuation ' )
question ( 1 )
2015-02-09 12:04:12 +01:00
EQUIV_NON_ACCENTUE = { ' é ' : ' e ' , ' è ' : ' e ' , ' à ' : ' a ' , ' ç ' : ' c ' ,
' î ' : ' i ' , ' ï ' : ' i ' , ' ô ' : ' o ' , ' ê ' : ' e ' , ' ë ' : ' e ' , ' â ' : ' a ' , ' û ' : ' u ' }
2015-01-27 11:24:38 +01:00
2015-01-26 23:06:46 +01:00
question ( 2 )
2015-02-03 10:47:19 +01:00
2015-01-27 11:24:38 +01:00
def bas_casse_sans_accent ( chaine ) :
2015-02-09 17:29:39 +01:00
"""
Renvoie l ' équivalent minuscule non accentuée de la chaîne passée en paramètre
str → str
CU : chaine est un str
2015-01-27 11:24:38 +01:00
"""
2015-02-09 17:29:39 +01:00
assert ( type ( chaine ) == str ) , ' chaine doit être un str '
2015-01-27 11:24:38 +01:00
2015-02-03 10:47:19 +01:00
chaineCpy = chaine . lower ( )
2015-01-27 11:24:38 +01:00
ret = " "
for i in chaineCpy :
if i in EQUIV_NON_ACCENTUE :
ret + = EQUIV_NON_ACCENTUE [ i ]
else :
ret + = i
return ret
2015-01-26 23:06:46 +01:00
question ( 3 )
2015-02-03 10:47:19 +01:00
2015-01-27 11:24:38 +01:00
def sont_anagrammes_sans_casse_ni_accent ( chaine1 , chaine2 ) :
2015-02-09 17:29:39 +01:00
"""
Indique si chaine1 et chaine2 sont anagrammes sans de tenir compte de la casse ni des accents
str , str → bool
CU : chaine1 et chaine2 sont des str
2015-01-27 11:24:38 +01:00
"""
2015-02-09 17:29:39 +01:00
assert ( type ( chaine1 ) == type ( chaine2 ) == str ) , ' chaine1 et chaine2 doivent être des str '
2015-01-27 11:24:38 +01:00
2015-02-09 17:29:39 +01:00
# Si la longueur est différente, ça ne peut pas être des anagrammes
2015-02-03 10:47:19 +01:00
if len ( chaine1 ) != len ( chaine2 ) :
2015-01-27 11:24:38 +01:00
return False
chaine1Cpy = bas_casse_sans_accent ( chaine1 )
chaine2Cpy = bas_casse_sans_accent ( chaine2 )
2015-02-09 17:29:39 +01:00
return sont_anagrammes2 ( chaine1Cpy , chaine2Cpy ) # TODO Voir quelle est la meilleure méthode
2015-01-27 11:24:38 +01:00
2015-01-26 23:06:46 +01:00
2015-02-03 10:47:19 +01:00
partie ( ' Recherche d \' anagrammes ' ) # Jean-loup
2015-01-26 23:06:46 +01:00
section ( ' Le lexique ' )
question ( 2 )
2015-01-27 11:46:52 +01:00
from lexique import *
2015-01-26 23:06:46 +01:00
question ( 3 )
2015-01-27 11:46:52 +01:00
print ( ' Il y a ' , len ( LEXIQUE ) , ' mots dans le lexique ' )
2015-01-26 23:06:46 +01:00
question ( 4 )
2015-01-27 11:46:52 +01:00
ens = set ( LEXIQUE )
if len ( ens ) != len ( LEXIQUE ) :
print ( ' Il y a des doublons ' )
else :
print ( ' Il n \' y a pas de doublons ' )
2015-01-26 23:06:46 +01:00
2015-02-08 20:35:45 +01:00
section ( ' Anagrammes d \' un mot : première méthode ' )
2015-01-26 23:06:46 +01:00
question ( 1 )
2015-02-03 10:47:19 +01:00
2015-01-27 11:46:52 +01:00
def anagrammes ( mot ) :
2015-02-09 17:29:39 +01:00
""" str → list de str, parcourt tout le lexique et recherche les anagrammes de mot
CU : mot est un str
2015-01-27 11:46:52 +01:00
"""
2015-02-03 10:47:19 +01:00
assert ( type ( mot ) == str )
2015-01-27 11:46:52 +01:00
anag = [ ]
for i in LEXIQUE :
if sont_anagrammes_sans_casse_ni_accent ( i , mot ) :
anag . append ( i )
return anag
2015-01-26 23:06:46 +01:00
question ( 2 )
2015-02-03 10:46:00 +01:00
print ( ' Les anagrammes de Orange sont: ' , anagrammes ( ' Orange ' ) )
print ( ' Les anagrammes de Calbuth sont: ' , anagrammes ( ' Calbuth ' ) )
2015-01-26 23:06:46 +01:00
2015-02-08 20:35:45 +01:00
section ( ' Anagrammes d \' un mot : seconde méthode ' )
2015-01-26 23:06:46 +01:00
question ( 1 )
2015-02-03 10:47:19 +01:00
# Il se peut que certains mots du lexique soient des anagrammes d'autres
# mots du lexique, or on se retrouverait alors avec plusieurs fois la même
# liste d'anagrammes pour des clés différentes.
2015-01-27 11:46:52 +01:00
2015-01-26 23:06:46 +01:00
question ( 2 )
2015-02-03 10:47:19 +01:00
2015-02-03 10:46:00 +01:00
def cle ( mot ) :
2015-02-09 17:29:39 +01:00
""" str → str , renvoie la version triée des lettres de mot, sans accent et en bas de casse.
CU : mot est un str
2015-02-03 10:46:00 +01:00
"""
2015-02-03 10:47:19 +01:00
assert ( type ( mot ) == str )
2015-02-03 10:46:00 +01:00
2015-02-08 20:35:45 +01:00
cpy = bas_casse_sans_accent ( mot )
2015-02-03 10:46:00 +01:00
2015-02-08 20:35:45 +01:00
return sort ( cpy )
2015-02-03 10:46:00 +01:00
2015-01-26 23:06:46 +01:00
question ( 3 )
2015-02-03 11:28:03 +01:00
ANAGRAMMES = dict ( )
for i in LEXIQUE :
k = cle ( i )
2015-02-08 20:35:45 +01:00
if not k in ANAGRAMMES :
2015-02-09 12:04:12 +01:00
ANAGRAMMES [ k ] = [ i ]
2015-02-08 20:35:45 +01:00
else :
2015-02-09 12:04:12 +01:00
ANAGRAMMES [ k ] = ANAGRAMMES [ k ] + [ i ]
2015-02-03 11:28:03 +01:00
2015-02-03 10:46:00 +01:00
print ( len ( ANAGRAMMES ) )
2015-01-26 23:06:46 +01:00
question ( 4 )
2015-02-03 10:47:19 +01:00
2015-02-03 10:46:00 +01:00
def anagrammes2 ( mot ) :
2015-02-09 17:29:39 +01:00
""" str → list de str, utilise le dictionnaire ANAGRAMMES pour trouver la liste des anagrammes de mot
CU : mot est un str
2015-02-03 10:46:00 +01:00
"""
k = cle ( mot )
if k in ANAGRAMMES :
return ANAGRAMMES [ k ]
else :
return [ ]
2015-01-26 23:06:46 +01:00
question ( 5 )
2015-02-03 10:46:00 +01:00
print ( ' Les anagrammes de Orange sont: ' , anagrammes2 ( ' Orange ' ) )
print ( ' Les anagrammes de Calbuth sont: ' , anagrammes2 ( ' Calbuth ' ) )
2015-01-26 23:06:46 +01:00
section ( ' Comparaison des deux méthodes ' )
question ( 1 )
2015-02-09 12:03:16 +01:00
import time
2015-02-08 20:35:45 +01:00
2015-02-09 12:03:16 +01:00
debut = time . time ( )
2015-02-08 20:35:45 +01:00
2015-02-09 12:03:16 +01:00
for i in range ( 30 ) :
anagrammes ( LEXIQUE [ i ] )
2015-02-08 20:35:45 +01:00
2015-02-09 12:03:16 +01:00
temps1 = time . time ( ) - debut
2015-02-08 20:35:45 +01:00
2015-02-09 12:03:16 +01:00
debut = time . time ( )
2015-02-03 10:59:16 +01:00
2015-02-09 12:03:16 +01:00
for i in range ( 30 ) :
anagrammes2 ( LEXIQUE [ i ] )
2015-02-09 12:04:12 +01:00
2015-02-09 12:03:16 +01:00
temps2 = time . time ( ) - debut
2015-02-08 20:35:45 +01:00
2015-02-09 12:04:12 +01:00
print ( ' La première méthode à mis %s secondes, et la deuxième %s secondes ' %
( temps1 , temps2 ) )
2015-02-08 20:35:45 +01:00
2015-01-26 23:06:46 +01:00
2015-02-09 12:03:16 +01:00
partie ( ' Phrases d \' anagrammes ' ) # Geoffrey
2015-01-26 23:06:46 +01:00
2015-02-09 12:03:16 +01:00
question ( 1 )
2015-02-09 13:21:21 +01:00
def arbre_vers_liste ( arbre , precede ) :
# dict → list
# TODO Docstring
# {1: [3, 4], 2: [3, 4]} ⇒ [[1, 3], [1, 4], [2, 3], [2, 4]]
2015-02-09 12:03:16 +01:00
possibilites = [ ]
2015-02-09 13:21:21 +01:00
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 ] ]
2015-02-09 12:03:16 +01:00
return possibilites
2015-02-03 11:24:44 +01:00
2015-02-09 12:04:12 +01:00
2015-02-09 12:03:16 +01:00
def annagrammes_arbre ( liste ) :
# TODO Docstring
2015-02-09 13:21:21 +01:00
# [1, 2] ⇒ {1: [1, 3], 2: [2, 4]}
2015-02-09 12:03:16 +01:00
anagrammesPremier = anagrammes ( liste [ 0 ] )
if len ( liste ) > 1 : # Si il y a des anagrammes après
2015-02-09 13:21:21 +01:00
return dict ( ( i , annagrammes_arbre ( liste [ 1 : ] ) ) for i in anagrammesPremier )
2015-02-09 12:03:16 +01:00
else :
2015-02-09 13:21:21 +01:00
return dict ( ( i , None ) for i in anagrammesPremier )
2015-02-03 11:24:44 +01:00
2015-02-09 12:04:12 +01:00
2015-02-09 12:03:16 +01:00
def developpement ( mots ) :
# [[1, 2], [3, 4]] ⇒ [[1, 3], [1, 4], [2, 3], [2, 4]]
# TODO Docstring
for annagrammes in mots :
for annagramme in annagrammes :
return False
2015-02-03 10:50:19 +01:00
2015-01-27 11:45:34 +01:00
2015-02-09 12:03:16 +01:00
def annagrammes_phrase ( phrase ) :
# TODO Docstring
mots = phrase . split ( )
anagrammesArbre = annagrammes_arbre ( mots )
2015-02-09 13:21:21 +01:00
# 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 ]
2015-02-09 12:02:00 +01:00
2015-02-09 13:21:21 +01:00
print ( annagrammes_phrase ( ' détruirions épargnions ' ) ) # DEBUG
# print(arbre_vers_liste({1: None, 3: {5: None}}, [])) # DEBUG
2015-01-27 11:45:34 +01:00
2015-02-09 12:02:00 +01:00
partie ( ' Sauvegarde et récupération ' )
2015-02-03 10:52:49 +01:00
2015-02-09 12:02:00 +01:00
ANAGRAMMES_FICHIER = ' anagrammes.txt '
question ( 1 )
2015-02-09 12:04:12 +01:00
2015-02-09 12:02:00 +01:00
def sauver_dico ( ) :
f = open ( ANAGRAMMES_FICHIER , ' w ' )
for i in ANAGRAMMES :
f . write ( i + ' : ' + ' : ' . join ( ANAGRAMMES [ i ] ) + ' \n ' )
f . close ( )
question ( 2 )
sauver_dico ( )
from os . path import getsize
taille = getsize ( ANAGRAMMES_FICHIER )
2015-02-09 12:04:12 +01:00
print ( ' Le dictionnaire fait %d octets, soit %0.3f Mio. ' %
( taille , taille / 1024 / 1024 ) )
2015-02-09 12:02:00 +01:00
question ( 3 )
2015-02-09 12:04:12 +01:00
2015-02-09 12:02:00 +01:00
def charger_dico ( ) :
ANAGRAMMES = dict ( )
f = open ( ANAGRAMMES_FICHIER , ' r ' )
for l in f :
2015-02-09 13:21:21 +01:00
decoupe = ' : ' . split ( str ( l ) )
2015-02-09 12:02:00 +01:00
ANAGRAMMES [ decoupe [ 0 ] ] = decoupe [ 1 : ]
f . close ( )