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 :

Maximum et minimum d'un prédicat


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 Maximum et minimum d'un prédicat
    Bonjour,
    Je cherche à faire un prédicat qui me permettrait de récupérer le maximum et le minimum d'un ensemble de prédicats..
    Je m'explique.
    Par exemple, j'ai les prédicats suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pred(1).
    pred(2).
    pred(3).
    pred(4).
    J'aimerais faire un prédicat qui me sorte 1 et 4.
    J'avais pensé à faire une liste que l'on rempli avec les prédicats, la trier, puis récupérer la tête et la queue. Mais je n'arrive pas à insérer un élément.

    Quelqu'un a une solution ?

    Merci !

  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
    Est-ce que tu connais le prédicat findall/3?

    findall(-A,+G,-L) est vrai si:
    -A est une variable
    -G est un goal utilisant A
    -L est la liste des valeurs pour A rendant G vrai

    ça devrait t'aider

  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
    Ok merci, je pense que je vais pourvoir en faire quelque chose.
    Une fois les prédicats placés dans la liste, je pourrais la trier et récupérer la te et la queue.
    Mais comment je fais pour manipuler ma liste après ? Comment on la référence ?

  4. #4
    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
    Mais comment je fais pour manipuler ma liste après ? Comment on la référence ?
    De la même façon que toutes les listes

    Une fois les prédicats placés dans la liste, je pourrais la trier et récupérer la te et la queue.
    Tu peux récupérer les valeurs de tes prédicats et non pas tes prédicats en eux-même. Ainsi tu te retrouveras avec une liste de nombres. Et pourquoi vouloir la trier? Si c'est pour récupérer le maximum et le minimum, ça peut être fait en O(N), tandis que la trier sera en O(N log(N)) ce qui sera moins rapide...

  5. #5
    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, avec findall j'obtiens bien ma liste de prédicats.
    Donc j'ai une question de base, quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ?- findall(X, pred(X), R).
    R = [1, 2, 3, 4].
    Ma liste est bien dans R.
    Mais comment je fais pour manipuler cette liste ensuite ?
    Quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ?- write(R).
    _G225
    true.
    Je pense que j'ai pas compris un truc avec le principe d'unification, tu pourrais m'éclairer ?

    Merci !

  6. #6
    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
    La durée de vie d'une variable est le temps d'un goal ou le temps d'un prédicat. Du coup, dans un premier goal, tu te crées une variable qui meurt et toi tu essaies de la récupérer après qu'elle soit morte. (il y en a qui ont essayés, ils ont eu des problèmes )

    Pour un bien, il faut que tu définisses de nouveaux prédicats dans un fichier que tu chargeras et ensuite tu pourras appeler ce nouveau prédicat qui t'indiquera directement la solution

  7. #7
    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
    Résolu !
    Merci bien !

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

Discussions similaires

  1. maximum et minimum locaux
    Par slaima15 dans le forum Signal
    Réponses: 2
    Dernier message: 22/09/2009, 17h14
  2. Maximum ou minimum entre plusieurs colonnes
    Par theworst dans le forum SQL
    Réponses: 2
    Dernier message: 04/03/2009, 10h34
  3. Permutations, maximum et minimum des chiffres d'un entier
    Par JetliMohamed dans le forum Pascal
    Réponses: 14
    Dernier message: 29/01/2008, 22h20
  4. Réponses: 6
    Dernier message: 02/04/2007, 14h20

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