Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Prolog
Prolog Forum d'entraide sur la programmation en langage Prolog. Avant de poster : Cours Prolog
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/12/2012, 21h52   #1
bougnbie
Membre à l'essai
 
Homme Ali
Étudiant
Inscription : octobre 2012
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Ali
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2012
Messages : 33
Points : 20
Points : 20
Par défaut Probleme prolog fonction séparation liste

Bonjour,
je vous expose mon probleme:
Mon but est d'écrire une fonction qui sépare une liste L en deux sous listes L1 et L2, L1 étant la suite des premiers éléments de L égaux, L2 étant le reste, par exemple:
L = [a,a,a,a,n,j].
L1=[a,a,a,a],
L2=[n,j].

Voici mon code
Code :
1
2
3
4
5
recup([X|L],L1,L2):- recup(L,L1,L2,[X],X).
recup([],A,[],A,B).
recup([X|L],[X|Pile],K,Pile,Cri):- X = Cri,Pile2=[X|Pile], recup(L,F,K,Pile2,Cri),!.
recup([X|L],A,B,Pile,Cri):-not(X=Cri),A = Pile, B=[X|L],!.
Malheuresement, ça ne fait pas tout à fait ce que je désire, par exemple pour L= [a,a,a,a,b,j,k], j'ai L1= [a,a] et L2= [b,j,k].

Je suis prêt à donner des explications si ce n'est pas clair.
bougnbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2012, 22h52   #2
bougnbie
Membre à l'essai
 
Homme Ali
Étudiant
Inscription : octobre 2012
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Ali
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2012
Messages : 33
Points : 20
Points : 20
J'ai réussi à faire un truc qui fonctionne, je met le code:

Code :
1
2
3
4
5
6
7
recup2([X|L],K):- recup2(L,K,X).
recup2([],[],_).
recup2([X|L],K,Cri):- X = Cri,recup2(L,K,Cri),!.
recup2(A,A,_).

recup(L,L1,L2):-recup2(L,L2), append(L1,L2,L),!.
Par contre j'ai tellement souffert sur la première question que j'aimerais pas mal avoir une idée de pourquoi ça ne fonctionnait pas.
bougnbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2012, 23h38   #3
Trap D
Rédacteur/Modérateur
 
Avatar de Trap D
 
Inscription : septembre 2003
Messages : 4 437
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 4 437
Points : 5 301
Points : 5 301
Euh, ta deuxième version ne fonctionne pas :
Citation:
recup( [x, y,a,a,t, u,a,a,b,j,k], L1, L2).
L1 = [x],
L2 = [y,a,a,t,u,a,a,b,j,k].
Qu'en est-il de liste de ce type ?
recup([a,a,a, b,b, c,d,e], L1, L2) ??
__________________
"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 : Intérieur avec jeune femme de Vilhelm Hammershoi
Trap D est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 17h36   #4
bougnbie
Membre à l'essai
 
Homme Ali
Étudiant
Inscription : octobre 2012
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Ali
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2012
Messages : 33
Points : 20
Points : 20
Ma deuxieme version fonctionne, c'est bien ce que je voulais.

Pour recup([a,a,a, b,b, c,d,e], L1, L2) ,
il faut:
L1=[a,a,a],
L2=[b,b,c,d,e].

Le but est de récupérer dans L1 tous les éléments tant qu'ils sont égaux au tout premier élément, et dans L2 la suite de la liste à partir du premier élément différent du premier.


Donc ma deuxième version fonctionne correctement; la première version devrait aussi d'après moi, mais ce n'est pas le cas
bougnbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h00.


 
 
 
 
Partenaires

Hébergement Web