IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Le mot le plus long


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 27
    Points
    27
    Par défaut Le mot le plus long
    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.

  2. #2
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    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é.

  3. #3
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    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)

  4. #4
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    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 :
    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);
    }
    Soit : 4.500.244 possibilités

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    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

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonsoir ami amateur des chiffres et des lettres
    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 %)
    ton message c'est avec les lettres non ordonnées dans ta base, , j'ai un peu peur du résultat non?
    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)

  7. #7
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    au pire tu testes le md5(strtolower()) afin de traiter une chaine et pas caracteres par caracteres

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    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

  9. #9
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    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)

  10. #10
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    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

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    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.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Sous Linux, la commande grep permet de chercher des mots dans un dictionnaire. Donc il s'agit d'exploiter ceci :

    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');
    ?>
    Ce script affichera tous les mots existants parmi les possibilités de combinaisons

    Cordialement.

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    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

Discussions similaires

  1. [TASM] Le mot le plus long d'une chaîne de caractères
    Par barbaross15 dans le forum x86 16-bits
    Réponses: 0
    Dernier message: 10/11/2010, 21h45
  2. Rechercher mot le plus long d'une chaine de caractère
    Par fafabzh6 dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/10/2009, 17h15
  3. [RegEx] Conserver le mot le plus long
    Par Zoldik dans le forum Langage
    Réponses: 4
    Dernier message: 18/03/2009, 12h14
  4. Affichage du mot le plus long
    Par winzilla dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 13/11/2008, 23h25
  5. Trouver le mot le plus long dans une chaîne
    Par bassoum dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 02/11/2008, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo