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 :

Grammaire générative erreur


Sujet :

Prolog

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Août 2010
    Messages : 86
    Points : 84
    Points
    84
    Par défaut Grammaire générative erreur
    Bonjour,
    Je travaille actuellement sur un projet ou je dois créer une grammaire à partir de laquelle je dois générer des phrases.
    Donc j'ai choisi Prolog mais là j'ai un petit soucis de débutant...

    Mon problème est le suivant :
    J'ai une adresse de départ, et la taille de cette adresse.
    Je veux générer toutes les adresses possibles de facon à quelles soient comprises dans l'intervalle (adresseDebut+taille).

    Exemple :
    AdresseDebut=1000
    Size=500

    Par exemple ça générera Adresse=1000, Size = 500 ou bien Adresse = 1200, Size = 50 etc..

    Donc j'ai fais ça en SWI-Prolog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /* Prédicat pour regionAdress et RegionOp.Size */
    addrDebut(1000).
    size(X) :-
       X>0,
       X<100. //Le 100 correspond à la size
     
    phraseAddr(X,Y) :-
       addrDebut(X),
       size(Y).
       X+Y<1100.
    Mais ça ne marche pas j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ?- phraseAddr(1000,50).
    true.
     
    ?- findall( (X,Y), phraseAddr(X,Y), R).
    ERROR: >/2: Arguments are not sufficiently instantiated
    ?-

  2. #2
    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
    Ta méthode permet une fois corrigée de générer des adresses valides, mais cela n'a rien à voir avec une grammaire.
    Ta méthode corrigée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    adresse(1000).
    size(500).
     
    adresse_valide(X) :-
    	adresse(Adr),
    	size(Size),
    	S is random(Size),
    	X is Adr + S.
    Cela te génère des adresses valides mais un bagof ne te les donnera pas toutes.
    Au lieu de S is random(Size), tu peux faire un between(0, Size, S) qui les génère toutes mais les crée dans l'ordre croissant.
    "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

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Août 2010
    Messages : 86
    Points : 84
    Points
    84
    Par défaut
    Merci pour ta réponse mais ce n'est pas ce je voulais réellement.
    Parce-que d'une part on introduit un paramètre aléatoire, et moi je voudrais énumérer les solutions plutôt que de générer et tester si c'est valide avec un random.

    De plus, je voudrais savoir si c'est possible d'avoir en plus de la sortie, la taille que le générateur à prit pour que ce soit valide.
    Parce-que là ça me sort une adresse valide, mais je voudrais connaitre la taille, c'est à dire qui si par exemple j'ai pour adresse de départ 1000 et size 50 et que ça me sort une adresse de 1020, je voudrais la valeur 20, donc un tuple je suppose (1020,20).

    Est-ce possible ?

Discussions similaires

  1. [PPT-2003] Nombre d'erreurs grammaire et orthographe de la présentation
    Par November-Oscar dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 05/07/2012, 19h59
  2. [WD-2003] Information du nombre d'erreur d'un document (touche F7 orthographe et grammaire)
    Par November-Oscar dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/03/2012, 20h19
  3. Réponses: 2
    Dernier message: 21/05/2002, 10h25
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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