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 :

utiliser fonction append


Sujet :

Prolog

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut utiliser fonction append
    Bonjour,

    le tri à bulles
    .
    Il y a plusieurs méthodes de tri : ici l'idée est la suivante : je déclare un prédicat qui vérifie si un
    élément est plus grand qu'un autre. Ensuite dans une liste je cherche deux éléments adjacents tel que le
    prédicat plus grand donne vrai, alors je les échange et je crée une Liste1 au fur et à mesure et à la fin
    Liste contient tous les élément de la première liste mais triés. Si il n'y a plus d'éléments adjacents pour
    lesquels plus grand est vrai, cela veut dire que ma liste est triée


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    une_bulle([X], 0, [X]).
    une_bulle([X, Y | R], 1, [Y | L]) :- X > Y, !,
    une_bulle([X | R], _A, L).
     
     
    une_bulle([X, Y | R], A, [X | L]) :-
    	une_bulle([Y | R], A, L).
     
    tri_bulle(L1, L) :-
    	une_bulle(L1, A, L2),
    	(   A == 0, L = L2 ; tri_bulle(L2, L)).
    je ne trouve pas comment faire pour faire un code pour introduire append ??

  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
    Bonjour.
    Pourquoi vouloir utiliser append dans ce code, il est très bien.
    Append ne sert que lorsque l'on veut concaténer des listes, ici, à chaque fois, on met un élément en tête de la liste, pas besoin de append.
    "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 du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    Parceque le prof m'a envoyé la réponse on distant qu'il veut un prédicat append dans la solution et cut !

  4. #4
    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
    En y réfléchissant un peu, on peut pfaire un code avec append mais il n'est pas très intéressant.
    L'idée est de recopier les elements de la liste à trier (avec un append donc) dans un nouvelle liste, et on met un flag à 1 a chaque fois qu'une inversion a été constatée.
    A la fin
    On repète l'opération tant que le flag est à 1.

    Je te donne le code pour ce qu'il vaut, il en existe surement des meilleurs, mais le tien est bien mieux.
    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
    tri_bulle(L1, L2) :-
    	tri_bulle(L1, [], A, L),
    	(   A = 0
    	->  L = L2
    	;    tri_bulle(L, L2)).
     
    tri_bulle([X, Y], R, 0, L) :-
    	X < Y, !,
    	append(R, [X, Y], L).
     
    tri_bulle([X, Y], R, 1, L) :-
    	append(R, [Y, X], L).
     
    tri_bulle([X, Y | T], R, A, L) :-
    	X < Y, !,
    	append(R, [X], R1),
    	tri_bulle([Y | T], R1, A, L).
     
    tri_bulle([X, Y | T], R, 1, L) :-
    	append(R, [Y], R1),
    	tri_bulle([X | T], R1, _, L).
    "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

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    Je vous remercie j'ai compris comment faire

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

Discussions similaires

  1. Pb de blancs dans utilisation fonction FtpFindFirstFile
    Par AlvinTheMaker dans le forum MFC
    Réponses: 2
    Dernier message: 06/04/2005, 12h33
  2. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  3. [GIMP] [Script-FU] Utilisation fonction gimp-curves-spline
    Par narmataru dans le forum Autres langages
    Réponses: 1
    Dernier message: 09/02/2005, 17h25
  4. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59
  5. Utilisation fonction définie dans un .Dll
    Par jeab. dans le forum Windows
    Réponses: 5
    Dernier message: 23/03/2004, 16h23

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