Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
741 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Anagrammes, solution efficace pour les trouver ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Anagrammes, solution efficace pour les trouver ?

n°857824
aspegic500​mg
Posté le 26-09-2004 à 02:56:28  profilanswer
 

J'ai téléchargé un ptit logiciel pour trouver les anagrammes d'un mot (tous les mots ayant les memes lettres qu'un autre, dans un ordre different, ex: loupi -> poilu ,ok ca veut rien dire mais c'est pour l'exemple :D ), et dans son dossier d'installation il y'a des fichiers textes contenant des dizaines(des centaines?) de milliers de mots triés alphabétiquement.
 
Je me demande comment faire en php pour trouver les anagrammes d'un mot, il y'a la solution d'une regex ("tous les mots ayant toutes les lettres du mot de départ" ) et de passer tous les mots de la bdd en revue à la suite, trés lourd tout de meme. Verriez-vous une autre solution :??:

mood
Publicité
Posté le 26-09-2004 à 02:56:28  profilanswer
 

n°858000
jolly
Posté le 26-09-2004 à 14:04:15  profilanswer
 

le pb de tous les mots ayant les meme lettres c qu'ensuite faut faire gaffe au doublons de lettres !
 
moi je vois une solution : pour chaque mot tu fait un anagramme qui ne veux rien dire mais qui a toutes les lettres de ce mot mais dans l'ordre alphabetique résultat tu fait pareil pour le mot que tu cherche et t'as qu'a faire un relevé  
 
exemple :  
Loupi -> ilopu
poilu -> ilopu
bob -> bbo
....
 
tien moi au courant  !

n°858068
aspegic500​mg
Posté le 26-09-2004 à 16:12:06  profilanswer
 

J'ai pas compris :heink:  :D

n°858076
jolly
Posté le 26-09-2004 à 16:20:39  profilanswer
 

bon je recommence  
pour TOUT tes mots dans ta bdd tu creer un 'mot joint' suivant cette regle : chaque mo joint contient toutes les lettres du mot d'origine mais triées par ordre alphabetique
 
exemple :  

Code :
  1. Mot  - >  Mot joint
  2. poilu  -> ilopu
  3. anagramme -> aaaegmmnr
  4. forum  -> fmoru


 
ensuite quand tu cherche un annagramme tu prend le ton mot d'origine  :
Loupi et tu fait la meme chose  
Loupi -> ilopu  
 
ensuite tu cherche dans ta base de données ce 'mot joint'. a chaque fois que tu trouve ce 'mot join',  
tu sais que le mot correspondant est un annagramme
 
l'avantage c que t'as juste a parcourrir 1 fois ta bdd sans regle trop compliquée de comparaison puisque le champ doit etre egal à ton 'mot joint'.  
 
pareil si tu utilise un fichier a la place de ta bdd, un coup de ereg ou d'une fonction parallele et tu recupere ton mot !
 
envoie moi ton fichier de mots et je te montrerai !

n°858160
aspegic500​mg
Posté le 26-09-2004 à 18:18:43  profilanswer
 

hannnn terrible comme solution :love:  :love:  :love:
 
Pour les fichiers, j'ai cherché mais j'avais supprimée le programme, ceci-dit il est sur telecharger.com, j'avais fait une recherche sur anagramme et scrabble, j'ai essayé de le retrouver mais pas moyen (j'en ai reinstaller 4 sans succés :/ )

n°858161
jolly
Posté le 26-09-2004 à 18:26:37  profilanswer
 

de rien  
 
c un pb auquel j'avais refléchi et en fait t obligé de te derouter completement de la constitution d'un mot pour arriver a en comparer plusieurs !
 
je cherche un dico correcte et la j'en ai trouvé un de 3.5Mo
y a tout les verbes conjugués dedans je crois  
soit 336531 mots - ca va exploser ma base sql de free je crois !

n°858194
aspegic500​mg
Posté le 26-09-2004 à 19:07:50  profilanswer
 

jolly a écrit :

de rien  
 
c un pb auquel j'avais refléchi et en fait t obligé de te derouter completement de la constitution d'un mot pour arriver a en comparer plusieurs !
 
je cherche un dico correcte et la j'en ai trouvé un de 3.5Mo
y a tout les verbes conjugués dedans je crois  
soit 336531 mots - ca va exploser ma base sql de free je crois !


 
C'est le dico d'un programme à télécharger ou tu l'a trouvé ailleurs? :)

n°858195
Hermes le ​Messager
Breton Quiétiste
Posté le 26-09-2004 à 19:11:20  profilanswer
 

Arf, un bête array_intersect est largement suffisant... Faudrait commencer à consulter la doc de temps en temps...


---------------
Expert en expertises
n°858210
aspegic500​mg
Posté le 26-09-2004 à 19:33:50  profilanswer
 

Hermes le Messager a écrit :

Arf, un bête array_intersect est largement suffisant... Faudrait commencer à consulter la doc de temps en temps...


 
ouais et tu veux qu'on la connaisse comment la fonction? Elle est peu utilisée, n'a pas un nom explicite, et je me vois mal lire la doc entière avec ses milliers de fonctions :sarcastic:

n°858265
jolly
Posté le 26-09-2004 à 20:24:59  profilanswer
 

ah conais pas cette fonction  !
 
mais apres ton array intersec, t'as encore a comparer la longueure du résultat ....
et pour 3 millions de mots ca fait quand meme bcp
 
je pense aussi que c plus lourd qu'une comparaison cde chaines 'simples'

mood
Publicité
Posté le 26-09-2004 à 20:24:59  profilanswer
 

n°858319
aspegic500​mg
Posté le 26-09-2004 à 21:13:11  profilanswer
 

jolly a écrit :

ah conais pas cette fonction  !
 
mais apres ton array intersec, t'as encore a comparer la longueure du résultat ....
et pour 3 millions de mots ca fait quand meme bcp
 
je pense aussi que c plus lourd qu'une comparaison cde chaines 'simples'


 
C'est ce que je pense aussi, avec ta méthode il suffit de faire un select * from machin where truc = truc2, une seule et unique requete, on peut pas faire plus léger :)

n°858355
jolly
Posté le 26-09-2004 à 22:02:42  profilanswer
 

sauf sur la quantité de mots  
a la rigueure je peense qu'il serait interessant de fragmenter selon la longueure des mots en plusieures tables mais je suis pas sur que 3 000 000 d'entrées dans Mysql soit si lourd que ca a gerer  !
 
en fait je bug deja dans la creation des entrées (timeout) alors :D !


Message édité par jolly le 26-09-2004 à 22:02:57
n°858375
Hermes le ​Messager
Breton Quiétiste
Posté le 26-09-2004 à 22:34:24  profilanswer
 

jolly a écrit :

ah conais pas cette fonction  !
 
mais apres ton array intersec, t'as encore a comparer la longueure du résultat ....
et pour 3 millions de mots ca fait quand meme bcp
 
je pense aussi que c plus lourd qu'une comparaison cde chaines 'simples'


 
Non, il suffit de prendre la longueur de la chaine et de comparer avec le nombre d'occurences. c'est rêglé en 2 lignes.


---------------
Expert en expertises
n°858377
Hermes le ​Messager
Breton Quiétiste
Posté le 26-09-2004 à 22:36:01  profilanswer
 

aspegic500mg a écrit :

ouais [u]et tu veux qu'on la connaisse comment la fonction[/u]? Elle est peu utilisée, n'a pas un nom explicite, et je me vois mal lire la doc entière avec ses milliers de fonctions :sarcastic:


 
Et comment tu crois que je l'ai trouvé la fonction ?
 
Tu prends la doc PHP en .chm, tu vas sur rechercher, tu mets tableaux, et tu regardes les fonctions capables de comparer deux tables. C'est aussi simple que ça, sachant que pour comparer la composition de 2 mots, tu devras passer par des tables de lettres...


---------------
Expert en expertises
n°858384
jolly
Posté le 26-09-2004 à 22:49:02  profilanswer
 

la Hermes a raison : la seule solution pour trouver les bonnes fonction c de potasser les manuels et de chercher  !

n°858404
aspegic500​mg
Posté le 26-09-2004 à 23:32:21  profilanswer
 

Je vois pas pourquoi j'aurai cherché à comparer 2 tableaux pour trouver des anagrammes, justement je demandais comment faire ca de manière efficace :o
 
Bon faut vraiment que je trouve ces fichiers de mots que j'avais, pour pouvoir tester ce bordel! (jolly si tu veux être généreux c'est le moment :D )

n°858599
jolly
Posté le 27-09-2004 à 21:29:38  profilanswer
 

(je réitère)  
 
je t'offre toute ma considération  
mais la ca me reloute : 3 million de mots c enorme  
ca explose deja un peu les timeout chez moi !!

n°858681
aspegic500​mg
Posté le 27-09-2004 à 23:08:21  profilanswer
 

Vite les timeout :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Anagrammes, solution efficace pour les trouver ?

 

Sujets relatifs
Ou trouver GLAB ?Trouver une page toute faite, un script ? Newbie inside !
headers mail : ou trouver le mail de l'expediteur avec certitude ?Thread ou autre solution?
compression de texte : algo efficace même sur peu de données[Excel me fait chier]Trouver la position d'1 sous chaine ds une chaine
[C#] Où trouver des tutos ?solution pour page web multilangage
trouver l'erreur(Javascript) Proteger son code source, Script Encoder...la solution?
Plus de sujets relatifs à : Anagrammes, solution efficace pour les trouver ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR