Sujet : Re: Tricher au scrabble...
De : michel (at) *nospam* domain.invalid (Michel)
Groupes : fr.comp.lang.pythonDate : 02. Dec 2023, 03:48:09
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <874jh1tlp1.fsf@gnus.org>
References : 1 2 3 4 5
User-Agent : Gnus
Le 1 décembre 2023 yves a écrit :
dictionnaire = "/usr/share/dict/french"
with open(dictionnaire) as f:
resultat = [mot.rstrip() for mot in f.readlines() if
sorted(mot.rstrip()) == sorted("acenrt")]
Pour les anagrammes c'est bon mais pour le scrabble on peut avoir des
lettres qui ne seraient pas utilisées et donc cet algo ne marcherait pas.
0.4 secondes sur mon ordi, quand même.
Sur le mien 0.280. Mais en reprenant le même principe que pour le
scrabble, en chargeant le fichier dans une array par longueur de mot,
j'obtiens 0.170.
fichier = "/usr/share/dict/french"
# on suppose que les mots font 27 caractères maxi
# (désinstitutionnalisassions)
MAX = 27
def charge_dico():
dictionnaire = [[] for i in range(MAX + 1)]
with open(fichier, 'r') as fp:
while line := fp.readline().rstrip():
dictionnaire[len(line)].append(line)
return dictionnaire
def recherche(lettres, dictionnaire):
resultat = [mot for mot in dictionnaire[len(lettres)]
if sorted(mot) == sorted(lettres)]
return resultat
tests = ['acenrt']
dictionnaire = charge_dico()
for lettres in tests:
print(lettres, ':', recherche(lettres, dictionnaire))