Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3033 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Qui sati faire du prolog ? Merci !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Qui sati faire du prolog ? Merci !

n°949760
rifflet
Posté le 10-01-2005 à 09:22:29  profilanswer
 

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

mood
Publicité
Posté le 10-01-2005 à 09:22:29  profilanswer
 

n°949763
skeye
Posté le 10-01-2005 à 09:28:55  profilanswer
 

plein de gens. de rien.


---------------
Can't buy what I want because it's free -
n°949773
rifflet
Posté le 10-01-2005 à 09:43:11  profilanswer
 

toi par exemple ?

n°949774
skeye
Posté le 10-01-2005 à 09:44:38  profilanswer
 

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 -
n°949778
Lam's
Profil: bas.
Posté le 10-01-2005 à 09:48:26  profilanswer
 

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

n°949786
rifflet
Posté le 10-01-2005 à 09:57:57  profilanswer
 

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 !

n°949803
pascal_
Posté le 10-01-2005 à 10:14:28  profilanswer
 

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

n°949805
rifflet
Posté le 10-01-2005 à 10:15:33  profilanswer
 

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.

n°949822
pascal_
Posté le 10-01-2005 à 10:31:31  profilanswer
 

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:

n°949823
rifflet
Posté le 10-01-2005 à 10:34:50  profilanswer
 

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

mood
Publicité
Posté le 10-01-2005 à 10:34:50  profilanswer
 

n°949834
pascal_
Posté le 10-01-2005 à 10:44:48  profilanswer
 

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

n°949839
uriel
blood pt.2
Posté le 10-01-2005 à 10:58:18  profilanswer
 

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


---------------
IVG en france
n°949840
rifflet
Posté le 10-01-2005 à 10:59:38  profilanswer
 

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

n°949842
rifflet
Posté le 10-01-2005 à 11:06:38  profilanswer
 

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 ...
 
 

n°949866
rifflet
Posté le 10-01-2005 à 11:28:50  profilanswer
 

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

n°949896
pascal_
Posté le 10-01-2005 à 12:12:57  profilanswer
 

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).

n°949899
rifflet
Posté le 10-01-2005 à 12:22:15  profilanswer
 

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 !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Qui sati faire du prolog ? Merci !

 

Sujets relatifs
petit probleme de prologFormulaire de l'aide SVP merci
Rollover en CSS, probleme sous IE [ impossible, merci IE ][Javascript] Obtenir la hauteur d'un "div" ? [Résolu, merci Leris]
[Java] Existe t il une librairie java pour prolog ?[résolu, merci][javascript] pb de lancement de formulaire
Un souci de chargement de son sur ma page, mercimanipulation des elements d'un formulaire (urgent) Merci
[RESOLU][CSS] Pb d'alignement avec balise <ul> -> Merci Lord ii !Include () Probleme - Aidez moi svp - Je suis débutant - merci
Plus de sujets relatifs à : Qui sati faire du prolog ? Merci !


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)