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

Prolog Discussion :

Exercice du 11ème mot


Sujet :

Prolog

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 63
    Points
    63
    Par défaut Exercice du 11ème mot
    alors voila mon probléme
    je dispose d'un dictionnaire de tous les mots français de 5 lettres
    exemple:

    mot(abima).
    mot(abime).
    .
    .
    .


    et à partir des 10 mots :
    1. banal
    2.herse
    3.coute
    4.beton
    5.cales.
    6.canal.
    7.raler.
    8.hesse.
    9.coule.
    10.seton.

    je dois trouver le 11éme mot tel que chaque mot a une et une seule lettre qui occupe la même place dans ce mot et dans le 11éme mot à déterminer



    donc j'essaye d'ecrir le programme prolog
    pour l'instant je suis bloqué à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot_a_trouver(L):-mot(L).

    ma question dois-je décomposer les 10 mots donc
    exemple banal en [b,a,n,a,l]
    et comment expliquer a prolog que L est une chaîne de caractère de 5 lettre

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    C'est un problème de traitement de chaines de caractères.

    Pour l'instant, tel que vous le notez, vous gardez des chaines comme des atomes. De ce fait, nous ne pouvez pas récupérer les différentes lettres qui composent ce mots.

    Voilà ce à quoi celà peut rassembler:

    mot("abima").
    mot("abime").
    ...

    Ainsi, vos mots seront considérés comme des listes de nombres.

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    atom_chars/2 fait très bien l'affaire :
    1 ?- atom_chars(atom, L).
    L = [a, t, o, m] ;
    false.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 63
    Points
    63
    Par défaut
    je peux pas écrire
    mot("abima").
    le dictionnaire est un fichier du prof il est énorme tous les mots de 5 lettre dans la langue française donc je pense pas que je peux tous modifier


    mon idée est la suivante
    décomposer les 10 mots en liste ,prolog essaye des listes qu'il compose en respectant le faite que chaque lettre est a sa place avec les mots du dictionnaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot_a_trouve(L):-mot_liste(X),mots(X),atom_chars(X,L).
    je dis a prolog que je L est le mots que cherche si L est un mots de la liste des 10mots et si L est un mots du dictionnaire
    maintenait je veux lui dire que L est de 5 lettre est la sa bloque

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    maintenait je veux lui dire que L est de 5 lettre est la sa bloque
    Si c'est une liste de cinq variables que tu veux, tu peux simplement faire:
    L = [A,B,C,D,E]

    et dans un cadre plus généraliste, pour avoir une liste de N variables, tu peux utiliser le prédicat length/2 de la façon suivante:
    length(L,5).

    qui te créera une liste de 5 variables.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 63
    Points
    63
    Par défaut
    voila ou j'en suis
    je sais pas si je suis sur la bonne voix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    /*mots de la liste*/
     
    mot_liste(banal).
    mot_liste(herse).
    mot_liste(coute).
    mot_liste(beton).
    mot_liste(cales).
    mot_liste(canal).
    mot_liste(raler).
    mot_liste(hesse).
    mot_liste(coule).
    mot_liste(seton).
     
    /*partie du dictionnaire*/
     
    mots(abaca).
    mots(abats).
    mots(abbes).
    mots(abces).
    mots(abdos).
    mots(abees).
    mots(abers).
    mots(abeti).
    mots(abies).
    mots(abima).
    mots(abime).
    mots(ables).
    mots(aboie).
    mots(abois).
    mots(bogie).
    mots(cagou).
     
     
     
     
    /*mot rechercher*/
    mot_rechercher(L1):-dictio_en_liste(L1),mot_composer_a_partir_de_liste(L1).
     
    /*decompose un mot du dictionnaire en liste*/ 
    dictio_en_liste(F):-mots(X),atom_chars(X,F).
     
     
     
    /*les mots composer à partir de la liste et qui respecte la contrainte */
    mot_composer_a_partir_de_liste(S):-mot_en_liste(S1),mot_en_liste(S2),mot_en_liste(S3),mot_en_liste(S4),
    						mot_en_liste(S5),mot_en_liste(S6),mot_en_liste(S7),mot_en_liste(S8),mot_en_liste(S9),mot_en_liste(S10).
     
     
    /*decompose un mots de la liste des 10 mots  en liste*/
    mot_en_liste(Q):-mot_liste(X),atom_chars(X,Q).

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 63
    Points
    63
    Par défaut
    j'ai modifier mon code j'ai bien avancer mais toujours bloqué
    donc il me reste a écrire juste un prédicat pour résoudre le probléme
    je pense que c'est le plus défficile
    c'est celui qui va crée la liste de 5 lettre a partir des mots de la liste en respectant la contrainte

    de l'aide !!!!svpppp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    /*mots de la liste*/
     
    mot_liste(banal).
    mot_liste(herse).
    mot_liste(coute).
    mot_liste(beton).
    mot_liste(cales).
    mot_liste(canal).
    mot_liste(raler).
    mot_liste(hesse).
    mot_liste(coule).
    mot_liste(seton).
     
    /*partie du dictionnaire*/
     
    mots(abaca).
    mots(abats).
    mots(abbes).
    mots(abces).
    mots(abdos).
    mots(abees).
    mots(abers).
    mots(abeti).
    mots(abies).
    mots(abima).
    mots(abime).
    mots(ables).
    mots(aboie).
    mots(abois).
    mots(bogie).
    mots(cagou).
     
     
     
    /*mot rechercher*/
    mot_rechercher(L1):-dictio_en_liste(L1),mot_composer_a_partir_de_liste(L1).
     
    /*decompose un mot du dictionnaire en liste*/ 
    dictio_en_liste(F):-mots(X),atom_chars(X,F).
     
    /*mots composer à partir de liste et qui respecte la contrainte 
    (c'est le prédicat qui reste a écrire)
    mot_composer_a_partir_de_liste(E):-E=[J,K,U,I,O],*/
     
     
     
    /*decomposer les mots de la liste en 10 listes différentes de 5lettre */
    decomposer_les_mots_de_la_liste(S1,S2,S3,S4,S5,S6,S7,S8,S9,S10):-mot_en_liste(S1),mot_en_liste(S2),mot_en_liste(S3),mot_en_liste(S4),
    						mot_en_liste(S5),mot_en_liste(S6),mot_en_liste(S7),mot_en_liste(S8),mot_en_liste(S9),mot_en_liste(S10),
    						S1\==S2,S1\==S3,S1\==S4,S1\==S5,S1\==S6,S1\==S7,S1\==S8,S1\==S9,S1\==S10,
    						S2\==S3,S2\==S4,S2\==S5,S2\==S6,S2\==S7,S2\==S8,S2\==S9,S2\==S10,
    						S3\==S4,S3\==S5,S3\==S6,S3\==S7,S3\==S8,S3\==S9,S3\==S10,
    						S4\==S5,S4\==S6,S4\==S7,S4\==S8,S4\==S9,S4\==S10,
    						S5\==S6,S5\==S7,S5\==S8,S5\==S9,S5\==S10,
    						S6\==S7,S6\==S8,S6\==S9,S6\==S10,
    						S7\==S8,S7\==S9,S7\==S10,
    						S8\==S9,S8\==S10,
    						S9\==S10.
     
     
     
     
     
    /*decompose un mot de la liste des 10 mots  en liste*/
    mot_en_liste(Q):-mot_liste(X),atom_chars(X,Q).

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 63
    Points
    63
    Par défaut
    j'ai fini par trouver
    merci quand même
    j'avais mal compris la question ahhh oui c'est sa quand on fait pas attention au problème;-)
    il y a un prédicat que j'ai zapé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /*nombre de lettre en commun entre deux liste au meme endroit*/
    nbr_de_lettre_en_commun([],[],0).
    nbr_de_lettre_en_commun(L1,L2,R):-L1=[T|Q],L2=[T1|Q1],T==T1,nbr_de_lettre_en_commun(Q,Q1,R1),R is R1+1.
    nbr_de_lettre_en_commun(L1,L2,R):-L1=[T|Q],L2=[T1|Q1],T\==T1,nbr_de_lettre_en_commun(Q,Q1,R1),R is R1.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraction de mots clés
    Par Olive1808 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 01/02/2016, 20h49
  2. Exercice - Générer un mot au hasard
    Par zied131 dans le forum Général Python
    Réponses: 25
    Dernier message: 24/06/2014, 00h07
  3. [langage] Reconnaissance de mots
    Par Flo. dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2002, 23h34
  4. Pouvez vous m'aider a resoudres ces 3 exercices
    Par algorithmique dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 09/08/2002, 17h26

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