#prolog
Вопрос:
У меня проблема, когда я могу показать путь от корня до нужного узла. Но я не могу изменить корень на другой узел на основе запроса. В моем случае я хочу, чтобы переменная Y была корнем.
Мой Код :
byCar(auckland,hamilton).
byCar(hamilton,raglan).
byCar(valmont,saarbruecken).
byCar(valmont,metz).
byTrain(metz,frankfurt).
byTrain(saarbruecken,frankfurt).
byTrain(metz,paris).
byTrain(saarbruecken,paris).
byPlane(frankfurt,bangkok).
byPlane(frankfurt,singapore).
byPlane(paris,losAngeles).
byPlane(bangkok,auckland).
byPlane(singapore,auckland).
byPlane(losAngeles,auckland).
travel(X,Y) :- byCar(X,Y).
travel(X,Y) :- byTrain(X,Y).
travel(X,Y) :- byPlane(X,Y).
is_node(X) :- travel(X,_),!;travel(_,X),!.
travel(X,Y,T) :- byCar(X,Y), T = car.
travel(X,Y,T) :- byTrain(X,Y), T = train.
travel(X,Y,T) :- byPlane(X,Y), T = plane.
is_root(valmont). %i want to change this into other node with the path(Y,X), and Y as the root
path(Y,X):- is_root(Y),travel1(X),write(X),!.
travel1(X):- is_root(X),!.
travel1(X):- travel(Y,X,T), travel1(Y), write([Y]),write(" by "),write(T),write(">>").