2010-11-27 13 views
0

Donc, j'ai une base de données des gares simplement étiquetés train (st1, st4). etcProlog findall aide

Je veux implémenter un find tous les prédicats afin qu'un utilisateur puisse interroger tous les chemins (X, Y, chemins). Et le code renverrait tous les chemins de X à Y.

Toute aide serait génial grâce

+0

Est-ce une question de devoirs? Avez-vous un prédicat pour un seul chemin "path (X, Y, Path)"? –

+0

Copie possible de [Prolog findall/3] (http://stackoverflow.com/questions/21082855/prolog-findall-3) –

Répondre

0
train(st1,st4). 
train(st1,st2). 
train(st2,st3). 
train(st3,st4). 
train(st4,st5). 
train(st3,st6). 
train(st6,st5). 
find(X,Y,[X|Y]):-train(X,Y). 
find(X,Y,[X|Q]):-train(X,Z),find(Z,Y,Q). 
findall2(X,Y):-find(X,Y,Q),write(Q),nl,fail. 

J'espère que ce que vous recherchez.

0

Même réponse que @sowa, mais avec la dernière ligne modifiée:

allpaths(X, Y, Ps) :- findall(P, find(X, Y, P), Ps). 

findall/3 est un prédicat Prolog intégré.