Qui sati faire du prolog ? Merci !

Qui sati faire du prolog ? Merci ! - Divers - Programmation

Marsh Posté le 10-01-2005 à 09:22:29    

Qui sait faire du prolog !!! ?? merci !

Reply

Marsh Posté le 10-01-2005 à 09:22:29   

Reply

Marsh Posté le 10-01-2005 à 09:28:55    

plein de gens. de rien.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-01-2005 à 09:43:11    

toi par exemple ?

Reply

Marsh Posté le 10-01-2005 à 09:44:38    

rifflet a écrit :

toi par exemple ?


Non.
Et tu es censé poser une question, pas recenser les gens qui pourraient y répondre...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-01-2005 à 09:48:26    

Moi, non.  
 
Mais par contre, j'ai mangé une galette des rois hier.  
 
Ca compte ?

Reply

Marsh Posté le 10-01-2005 à 09:57:57    

bon bon ...
ca, ca inverse une liste !  
 
reverse(Xs,Ys):-  
 reverse(Xs,[],Ys),
reverse([X|Xs],Acc,Ys) :-  
 reverse(Xs,[X|Acc],Ys).
reverse([],Ys,Ys).
 
par exemple: [a,b,c] devient [c,b,a]
par exemple: [[a,b],[c,d]] devient [[c,d],[a,b]]
Or je voudrai que ce la devienne [[d,c],[b,a]] !
il faudrai des appels recursif en plus mais je ne vois pas ou !

Reply

Marsh Posté le 10-01-2005 à 10:14:28    

Pourquoi ta fonction reverse prend deux arguments ? (et trois pour la partie avec Accu) En fait, a quoi correspond Ys ?

Reply

Marsh Posté le 10-01-2005 à 10:15:33    

Il y a une alternative à cette définition de reverse sans appel direct de append. On définit un prédicat auxiliaire reverse(Xs,Ys,Zs), vrai si Zs est le résultat de la concaténation de Ys aux éléments de Xs retournée. Il est défini par le programme qui suit.  Le prédicat reverse (3ème) est relié à reverse (2ème) par la première clause du programme.

Reply

Marsh Posté le 10-01-2005 à 10:31:31    

ok, Ys est le résultat du calcul (c'est vrai que c'est un peu loin le prolog  [:joce] )
 
Pour ton problème, il suffit de déclarer qqchose comme ça: (j'ai pas de compilo, donc c'est pas garanti :o )


reverse([ [Xt,Xq] |Xs],Acc,Ys) :-  
 reverse( Xt|Xq, [], X ),
 reverse(Xs,[ X|Acc],Ys).


donc quand tu dois inverser qqchose comme [ [1,2,3], ... ] il faut déjà inverser [1,2,3]  :hello:

Reply

Marsh Posté le 10-01-2005 à 10:34:50    

rien que ces trois ligne la ? ou ton bloc remplac eqqch de particulier ?

Reply

Marsh Posté le 10-01-2005 à 10:34:50   

Reply

Marsh Posté le 10-01-2005 à 10:44:48    

non, tu rajoutes avant la ligne reverse([X|Xs],Acc,Ys)

Reply

Marsh Posté le 10-01-2005 à 10:58:18    

[:drapo]  
 
je vois que d'autres se debrouillent mieux que moi :D


---------------
IVG en france
Reply

Marsh Posté le 10-01-2005 à 10:59:38    

tu saurais me mettre le code complet ?  
 
et je sais pas comment te joindre sur irc ! je suis avec F-Irc comme prog !

Reply

Marsh Posté le 10-01-2005 à 11:06:38    

donc:
 
reverse(Xs,Ys):-  
       reverse(Xs,[],Ys).
 
reverse([ [Xt,Xq] |Xs],Acc,Ys) :-  
       reverse( Xt|Xq, [], X ),
       reverse(Xs,[ X|Acc],Ys).  
 
reverse([X|Xs],Acc,Ys) :-  
       reverse(Xs,[X|Acc],Ys).
       reverse([],Ys,Ys).  
 
 
si c'est ca, cela ne fonctionne malheureusement pas ...
 
 

Reply

Marsh Posté le 10-01-2005 à 11:28:50    

up ... pascal ! revient ! lol tu etait ma seule chance ... snif

Reply

Marsh Posté le 10-01-2005 à 12:12:57    

La soluce qui marche :
 


reverse(Xs,Ys):-  
 reverse(Xs,[],Ys).  
 
reverse([ [Xt|Xq] |Xs],Acc,Ys) :-  
 reverse( [Xt|Xq], [], X ),  
 reverse(Xs,[ X|Acc],Ys).  
 
reverse([X|Xs],Acc,Ys) :-  
 reverse(Xs,[X|Acc],Ys).  
 
reverse([],Ys,Ys).

Reply

Marsh Posté le 10-01-2005 à 12:22:15    

mon deuxieme probleme est la creation d'un arbre binaire !
 
g la définition suivante:
 
binary_tree(void).
binary_tree(tree(Element,Left,Right)) :-  
 binary_tree(Left), binary_tree(Right).
 
mais j'aimerais créer un arbre avec des valeur 'a', 'b', 'c' etc pour pouvoir y appliquer des fonctions !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed