OVH Cloud OVH Cloud

Anagramme et vitesse d'execution

3 réponses
Avatar
Jag
Bonjour,
je suis entrain de faire une appli qui trouve tous les anagrammes d'un mot
et qui verifie dans un fichier texte (très gros), un après l'autre, si le mot
y figure. Le problème est que le nombre de combinaisons possibles avec un mot
de 8 lettres, par exemple, est d'environ 20000 mots. J'ai d'abord essaié en
recuperant le fichier dans un tableau de string, puis le parcourir avec
chaque anagramme. Le temps de traitement est trop long. Ensuite, j'ai
récupéré le fichier dans un string, et utilisé la methode IndexOf, mais c'est
egalement trop long. Quelqu'un aurait-t-il une idée afin de diminuer le temps
de traitement? Peut etre trouver les mots dans le fichier lorsque celui ci
est parcouru... Merci d'avance pour vos reponses.

3 réponses

Avatar
Fred
"Jag" a écrit dans le message de news:

Bonjour,
je suis entrain de faire une appli qui trouve tous les anagrammes d'un mot
et qui verifie dans un fichier texte (très gros), un après l'autre, si le
mot
y figure. Le problème est que le nombre de combinaisons possibles avec un
mot
de 8 lettres, par exemple, est d'environ 20000 mots. J'ai d'abord essaié
en
recuperant le fichier dans un tableau de string, puis le parcourir avec
chaque anagramme. Le temps de traitement est trop long. Ensuite, j'ai
récupéré le fichier dans un string, et utilisé la methode IndexOf, mais
c'est
egalement trop long. Quelqu'un aurait-t-il une idée afin de diminuer le
temps
de traitement? Peut etre trouver les mots dans le fichier lorsque celui ci
est parcouru... Merci d'avance pour vos reponses.



Bonsoir,
Le fichier : c'est un dictionnaire des mots valides ?
Si oui, il suffit de faire une passe dans le fichier et de vérifier si
chacun des mots est un anagramme ou non des 8 lettres de départ. Non ?
Avatar
Sylvain Lafontaine
Vous devez convertir votre mot cible et tous les mots de votre fichier texte
en anagramme absolu; c'est-à-dire en l'anagramme correspondant aux lettre
triées par ordre alphabétique; ce qui réduit le nombre de combinaisons
totales par mot à 1; peut importe son nombre de lettre.

La suite du résultat est évidemment quasi-instantanée.

S. L.

"Jag" wrote in message
news:
Bonjour,
je suis entrain de faire une appli qui trouve tous les anagrammes d'un mot
et qui verifie dans un fichier texte (très gros), un après l'autre, si le
mot
y figure. Le problème est que le nombre de combinaisons possibles avec un
mot
de 8 lettres, par exemple, est d'environ 20000 mots. J'ai d'abord essaié
en
recuperant le fichier dans un tableau de string, puis le parcourir avec
chaque anagramme. Le temps de traitement est trop long. Ensuite, j'ai
récupéré le fichier dans un string, et utilisé la methode IndexOf, mais
c'est
egalement trop long. Quelqu'un aurait-t-il une idée afin de diminuer le
temps
de traitement? Peut etre trouver les mots dans le fichier lorsque celui ci
est parcouru... Merci d'avance pour vos reponses.


Avatar
Vincent Lascaux
> La suite du résultat est évidemment quasi-instantanée.



Encore plus instantanée si le dictionnaire est formatté de façon appropriée
: par exemple comme un automate dans le fichier, ce qui permet de faire une
recherche en O(n) où n est le nombre de lettres du mot à chercher dans le
dico, indépendamment de la taille du dico, et sans nécessairement charger
l'intégralité du dico en mémoire.

--
Vincent