PROLOG PROGRAM : Write a Prolog program for Train Travel using recursion (NO ITE
ID: 3873113 • Letter: P
Question
PROLOG PROGRAM :
Write a Prolog program for Train Travel using recursion (NO ITERATIVE SOLUTIONS) given the below:
---------------------------------------------------------------------------------
(1) write a prolog program with the following knowledge base.
directTrain(union-station, san-bernardino).
directTrain(oxnard, union-station).
directTrain(burbank, lancaster).
directTrain(lancaster, union-station).
directTrain(san-bernardino, riverside).
directTrain(santa-ana, burbank).
directTrain(burbank, santa-ana).
directTrain(oceanside, santa-ana).
---------------------------------------------------------------------------------
(2) write a Prolog recursive predicate travelBetween that tells us when we can travel by train between two towns (not necesarily by a single direct trail).
---------------------------------------------------------------------------------
(3) what results do ou get when you test the program with the query (screenshot please): ?-travelBetween(oceanside, san-bernardino).
---------------------------------------------------------------------------------
(4) extend the program with a rule that adds directTrain between A and B whenever there is one from B to A
---------------------------------------------------------------------------------
(5) what results do you get when you test this query (screenshot please): ?-travelBetween(san-bernardino, oceanside).
---------------------------------------------------------------------------------
(6) what are some problems this program might run into?
Explanation / Answer
example: 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). connect(X,Y):-byCar(X,Y);byCar(Y,X). connect(X,Y):-byTrain(X,Y);byTrain(Y,X). connect(X,Y):-byPlane(X,Y);byPlane(Y,X). travel(X,Y):-travelLoop(X,Y,[]). travelLoop(X,Y,_):-connect(X,Y). travelLoop(X,Y,Passed):-connect(X,Thru), +memberchk(Thru,Passed), travelLoop(Thru,Y,[Thru|Passed]),X=Y. travel(_,_):-write('Wrong travel input, please try again.'),nl. travel(X,Y,go(X,Y)):-byCar(X,Y). travel(X,Y,go(X,Y)):-byTrain(X,Y). travel(X,Y,go(X,Y)):-byPlane(X,Y). travel(X,Y,go(X,Z,W)):-travel(X,Z,go(X,Z)),travel(Z,Y,W). travel1(X,Y,go(X,Y,car)):-byCar(X,Y). travel1(X,Y,go(X,Y,train)):-byTrain(X,Y). travel1(X,Y,go(X,Y,plane)):-byPlane(X,Y). travel1(X,Y,go(X,Z,V,W)):-travel1(X,Z,go(X,Z,V)),travel1(Z,Y,W).
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.