Prolog管行任务

Prolog管行任务,prolog,Prolog,我有一个任务,在prolog中制作一个简化的地铁地图,其中一部分是要求制定一个规则,检查两个车站是否在同一条线路上,我有一个规则,但它似乎不起作用这是我到目前为止所拥有的: adjacent(nh,lg,central,4). adjacent(lg,oc,central,4). adjacent(oc,tc,central,4). adjacent(tc,cl,central,4). adjacent(cl,ls,central,4). adjacent(ls,bg,central,4). a

我有一个任务,在prolog中制作一个简化的地铁地图,其中一部分是要求制定一个规则,检查两个车站是否在同一条线路上,我有一个规则,但它似乎不起作用这是我到目前为止所拥有的:

adjacent(nh,lg,central,4).
adjacent(lg,oc,central,4).
adjacent(oc,tc,central,4).
adjacent(tc,cl,central,4).
adjacent(cl,ls,central,4).
adjacent(ls,bg,central,4).
adjacent(br,vi,victoria,4).
adjacent(vi,oc,victoria,4).
adjacent(oc,ws,victoria,4).
adjacent(ws,kx,victoria,4).
adjacent(kx,fp,victoria,4).
adjacent(ke,em,northern,4).
adjacent(em,tc,northern,4).
adjacent(tc,ws,northern,4).
adjacent(ws,eu,northern,4).
adjacent(al,ls,metropolitan,4).
adjacent(ls,kx,metropolitan,4).
adjacent(kx,bs,metropolitan,4).
adjacent(bs,fr,metropolitan,4).
adjacent(ec,em,bakerloo,4).
adjacent(em,oc,bakerloo,4).
adjacent(oc,pa,bakerloo,4).
adjacent(pa,wa,bakerloo,4).

next(X,Y,L):-adjacent(X,Y,L,_).
next(X,Y,L):-adjacent(Y,X,L,_).
direct_connect(X,Y,L,S,F):-
                next(X,Z,L),
                not(member(Z,S)),
                direct_connect(Z,Y,L,[Z|S],F).
direct_connect(X,Y,L,S,[Y|S]):- next(X,Y,L).
one_change(X,Y,L,F):- 
                direct_connect(X,Z,L,[X],F1),
                direct_connect(Z,Y,L2,[Z|F1],F),
                L\=L2.
exist(X):-next(X,_,_).
member(X,[X|_]).
member(X,[_|T]):-member(X,T).
route(X,Y,F):-exist(X),exist(Y), 
              direct_connect(X,Y,_,[X],F),
              write('Direct Connection'),nl,
              revwrite(F).
route(X,Y,F):-exist(X),exist(Y), 
              one_change(X,Y,_,F), 
              write('One change required'),nl,  
              revwrite(F).
revwrite([X]):-write(X).
revwrite([H|T]):-revwrite(T), write('->'),write(H).
以及规则

sameLine(Stat1, Stat2, Line) :-
  station(Stat1, Line),
  station(Stat2, Line),
  Stat1 \= Stat2.

很抱歉,您的问题有一个问题:您给我们提供了大量数据和各种谓词,但您使用的是
station/2
谓词,但没有提供这些。此外,我认为你最好先尝试使用一个合适的设备,它会使事情变得更有效率……但它似乎不起作用,因为它太模糊了。请说明您的查询是什么,您期望从中得到什么结果,以及您实际看到的结果。