Qui sati faire du prolog ? Merci ! - Divers - Programmation
Marsh Posté le 10-01-2005 à 09:28:55
plein de gens. de rien.
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...
Marsh Posté le 10-01-2005 à 09:48:26
Moi, non.
Mais par contre, j'ai mangé une galette des rois hier.
Ca compte ?
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 !
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 ?
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.
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 )
Pour ton problème, il suffit de déclarer qqchose comme ça: (j'ai pas de compilo, donc c'est pas garanti )
|
donc quand tu dois inverser qqchose comme [ [1,2,3], ... ] il faut déjà inverser [1,2,3]
Marsh Posté le 10-01-2005 à 10:34:50
rien que ces trois ligne la ? ou ton bloc remplac eqqch de particulier ?
Marsh Posté le 10-01-2005 à 10:58:18
ReplyMarsh 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 !
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 ...
Marsh Posté le 10-01-2005 à 11:28:50
up ... pascal ! revient ! lol tu etait ma seule chance ... snif
Marsh Posté le 10-01-2005 à 12:12:57
La soluce qui marche :
|
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 !
Marsh Posté le 10-01-2005 à 09:22:29
Qui sait faire du prolog !!! ?? merci !