2013-11-22 67 views
0

我:序言輸入的未知變量

byCar(auckland,hamilton). 
byCar(hamilton,raglan). 

travelSimple2:- write('Travel'),nl, 
       write('From where '),read(From), 
       write('To where '),read(To), 
       write('Using (car/train/plane) '),nl, 
       read(Transport), 
       travel(From,To,Transport). 

travel(From,To,car):-byCar(From,To). 
travel(From,To,car) :- travel(From,Step,car), travel(Step,To,car). 

首先我問一個查詢:

| ?- travel(auckland,raglan,X). 

的Prolog然後回答

X = car ; 

但是當我問

| ?- travelSimple2. 
Travel 
From where |: auckland. 
To where |: raglan. 
Using (car/train/plane) 
|: X. 

它回答

yes 

所以我的問題是,如何讓序言答案(X =汽車)之類的第一個查詢,而不是肯定的。 是否可以這樣做?我認爲命令是相似的,但爲什麼答案是不同的。

回答

0

我想應該是

travelSimple2:- write('Travel'),nl, 
       write('From where '),read(From), 
       write('To where '),read(To), 
       write('Using (car/train/plane) '),nl, 
       travel(From,To,Transport), 
       write(Transport),nl. 
+0

這樣只會總是打印「汽車」。我想要的是用戶必須輸入運輸,如果它是一個項目prolog將回答是/否,否則,如果它是一個變量prolog會告訴「汽車」。例如:X = car –

+0

@MuAz,CapelliC有正確的想法。只需在'travelSimple2'謂詞的'travel'查詢之後加上'write(Transport),nl'即可。把'read(Transport)'留在你有的地方。 – lurker

+0

你說得對....我應該那樣使用它 –