| Deutsch English Français Italiano |
|
<874jh1tlp1.fsf@gnus.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Michel <michel@domain.invalid>
Newsgroups: fr.comp.lang.python
Subject: Re: Tricher au scrabble...
Date: Sat, 02 Dec 2023 03:48:09 +0100
Organization: A noiseless patient Spider
Lines: 42
Message-ID: <874jh1tlp1.fsf@gnus.org>
References: <uk4fm4$852n$1@dont-email.me>
<recherche-20231128131821@ram.dialup.fu-berlin.de>
<uk51rm$auel$2@dont-email.me> <656a1a3b$0$10088$426a74cc@news.free.fr>
<656a1e57$0$10088$426a74cc@news.free.fr>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Injection-Info: dont-email.me; posting-host="dca59e199930798328945c9eb8276c3d";
logging-data="2218323"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/2PNmyNGgXraqn5lUnBppL"
User-Agent: Gnus
Cancel-Lock: sha1:b4E3M4EH7tU5RCChsY5EpA3bIJM=
sha1:sLotOoJ1UrHGFY/k0kdrN8aq8Q4=
Mail-Copies-To: never
Bytes: 2355
Le 1 d=C3=A9cembre 2023 yves a =C3=A9crit :
> dictionnaire =3D "/usr/share/dict/french"
> with open(dictionnaire) as f:
> resultat =3D [mot.rstrip() for mot in f.readlines() if=20
> sorted(mot.rstrip()) =3D=3D sorted("acenrt")]
Pour les anagrammes c'est bon mais pour le scrabble on peut avoir des
lettres qui ne seraient pas utilis=C3=A9es et donc cet algo ne marcherait p=
as.
> 0.4 secondes sur mon ordi, quand m=C3=AAme.
Sur le mien 0.280. Mais en reprenant le m=C3=AAme principe que pour le
scrabble, en chargeant le fichier dans une array par longueur de mot,
j'obtiens 0.170.
fichier =3D "/usr/share/dict/french"
# on suppose que les mots font 27 caract=C3=A8res maxi
# (d=C3=A9sinstitutionnalisassions)
MAX =3D 27
def charge_dico():
dictionnaire =3D [[] for i in range(MAX + 1)]
with open(fichier, 'r') as fp:
while line :=3D fp.readline().rstrip():
dictionnaire[len(line)].append(line)
return dictionnaire
def recherche(lettres, dictionnaire):
resultat =3D [mot for mot in dictionnaire[len(lettres)]
if sorted(mot) =3D=3D sorted(lettres)]
return resultat
tests =3D ['acenrt']
dictionnaire =3D charge_dico()
for lettres in tests:
print(lettres, ':', recherche(lettres, dictionnaire))