继续做题 旅行问题
prolog吧
全部回复
仅看楼主
level 4
kmvwsue 楼主
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(losAngeles,auckland).
1。求任意两地是否可行? ex: travel(valmont,raglan). yes
2。travel的升级版,列出所经过的所有地点 ex:travel(valmont,paris,go(valmont,metz,go(metz,paris)))
3。再次升级版 列出交通工具 ex:travel(valmont,paris,byCar(valmont,metz,byTrain(metz,paris)))

2012年02月04日 20点02分 1
level 4
kmvwsue 楼主
%1
go(X,Y):-
byCar(X,Y);byTrain(X,Y);byPlane(X,Y).
travel(X,Y):-go(X,Y).
travel(X,Y):- go(X,Z),travel(Z,Y).
%2
travel(X,Y,go(X,Y)):- go (X,Y).
travel(X,Y,go(X,Z,Path)) :- go(X,Z), travel(Z,Y,Path).
%3
travel(X,Y,byCar(X,Y)):- byCar(X,Y).
travel(X,Y,byTrain(X,Y)):- byTrain(X,Y).
travel(X,Y,byPlane(X,Y)):- byPlane(X,Y).
travel(X,Z,byCar(X,Y,P)):- byCar(X,Y),travel(Y,Z,P).
travel(X,Z,byTrain(X,Y,P)):- byTrain(X,Y),travel(Y,Z,P).
travel(X,Z,byPlane(X,Y,P)):- byPlane(X,Y),travel(Y,Z,P).
2012年02月04日 20点02分 2
1