Bonjour,
Comment puis-je trouvé le mot le plus long à partir d'une serie de lettres en PHP, comme dans le jeu "Des chiffres et des lettres" ?
Un example d'une série de lettres : "ASETIPMOMA" (donc un mot de 10 lettres maximum).
Merci.
Bonjour,
Comment puis-je trouvé le mot le plus long à partir d'une serie de lettres en PHP, comme dans le jeu "Des chiffres et des lettres" ?
Un example d'une série de lettres : "ASETIPMOMA" (donc un mot de 10 lettres maximum).
Merci.
Ce qu'il te faut, c'est un dictionnaire des mots autorisés ...
Ensuite, le programme est simplement de produire l'ensemble des mots possibles à partir de tes lettres de départ et de regarder si ce n'est pas un mot autorisé.
Bonsoir,
Question que beaucoup de monde aimerait trouver
Effectivement avec un dico des 10 lettres et sur chaque mot une recherche sur les lettres ... mais je doute des combinaisons possibles.
Je met ce post en tag pour regarder les réponses.
Meuuh en AI à l'INRA
Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Pour le dictionnaire, on peut faire appel à un service externe (genre wiktionary) qui t'indiquera si le mot existe ou non (à quelques erreurs près, probablement ...).
Pour le dictionnaire de tous les mots jusqu'à 10 caractères, ça fait beaucoup de possibilités en effet :
Soit : 4.500.244 possibilités
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 long nb = 0; for(int i=1; i<=10; i++) { nb += i * factoriel(10-i+1); }
Y'a peut-être une facon plus optimisé pour faire cela mais en gros il te faut un dictionnaire en base de données.
Tu enregistres tous les mots du dico plus leur équivalent avec les lettres ordonnées, la recherche se fait donc par le mot ordonné et non par le mot avec la bonne orthographe. C'est pas très claire %)
Exemple:
arbre -> aberr
zoo -> ooz
chien -> cehin
niche -> cehin
Si tu ne trouves rien a X lettres, tu essayes X-1, y'a des boucles à faire mais elles ne sont pas monstrueuses.
Voila
Bonsoir ami amateur des chiffres et des lettres
ton message c'est avec les lettres non ordonnées dans ta base, , j'ai un peu peur du résultat non?Tu enregistres tous les mots du dico plus leur équivalent avec les lettres ordonnées, la recherche se fait donc par le mot ordonné et non par le mot avec la bonne orthographe. C'est pas très claire %)
Meuuh en AI à l'INRA
Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
au pire tu testes le md5(strtolower()) afin de traiter une chaine et pas caracteres par caracteres
Attention il te faut les 2 dans ta base, ton entrée doit comporter le mot avec la bonne orthographe plus le mot avec les lettres ordonnées.
ID MOT MOT_ORD
1 chien cehin
2 niche cehin
la recherche se fait sur la colonne MOT_ORD
Je tire les lettres ihenc, je les mets dans l'ordre cehin, je fais ma recherche avec le mot ordonnée
Madfrix c'est juste pour le test, tu ajoutes du md5 alors là on part dans du délire
batataw regardes les combinaisons tu nous fait du 4M-- X 4M--, faut du jus quand même
Meuuh en AI à l'INRA
Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Non c'etait juste pour stocker en base en char(40) les différents mots mais j'avoue que c'est foireux comme idée
C'est vrai que s'il ne trouve pas de mot dans les premières itérations ca va faire mal. L'algo doit être trouvable sur le web.
J'y réflèchis, je vais voir s'il n'y a pas une optimisation possible.
Bonjour,
Sous Linux, la commande grep permet de chercher des mots dans un dictionnaire. Donc il s'agit d'exploiter ceci :
Ce script affichera tous les mots existants parmi les possibilités de combinaisons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php function recurse($arr,$mot){ for($j=0;$j<strlen($mot);$j++){ if(in_array($j,$arr)) continue; $frag = ''; foreach($arr as $n) $frag .= $mot[$n]; $frag .= $mot[$j]; if(exec('grep -cx "'.$frag.'" /usr/share/dict/words')!=0) echo $frag.'<br />'; recurse(array_merge($arr,array($j)),$mot); } } recurse(array(),'MOT'); ?>
Cordialement.
Finallement c'est un sujet qui a déja été traité, plusieurs fois meme sur le forum. En gros l'approche a avoir est celle du jeu d'echecs. Ne pas parcourir toutes les combinaisons mais utiliser des astuces pour réduire la recherche. Si on ne trouve pas rapidement des solutions alors le CPU et la mémoire vont souffrir.
Une des astuces consiste a modéliser le dictionnaire sous forme d'arbre.
C'est extremement efficace pour retrouver tous les parents d'un mot.
Chaque niveau etant composé des lettres du mot précedent + n lettres
moue
->moule
--> mouler
--> moufle
--> moulage
--> tamoule
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager