Пролог найти все, помогите - PullRequest
0 голосов
/ 27 ноября 2010

Итак, у меня есть база данных железнодорожных станций, обозначенная просто поездом (st1, st4). и т.д.

Я хочу реализовать предикат find all, чтобы пользователь мог запрашивать все пути (X, Y, Paths). И код вернет все пути от X до Y.

Любая помощь будет потрясающей, спасибо

Ответы [ 2 ]

0 голосов
/ 27 ноября 2010

Тот же ответ, что и у @sowa, но последняя строка изменена на:

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

findall/3 - это встроенный предикат Пролога.

0 голосов
/ 27 ноября 2010
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.

Надеюсь, это то, что вы искали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...