2011-12-18 84 views
2

我想寫一條規則,通過事實數據庫並將每個事實的數字加起來並將其保存到列表中:具體來說,這是一個問題:序言 - 遞歸地添加到列表

根據對Q5的回答寫出規則,返回/顯示兩個車站之間的旅程需要多長時間。

回答問題5:

time(Station1,Station2) :- overground(Station1,Station2,Time), 
    overground(Station1,_,Time), 
    overground(_,Station1,Time). 
time(Station2,Station1) :- overground(Station2,Station1,Time), 
    overground(Station2,_,Time), 
    overground(_,Station2,Time). 
time(Station1,Station2) :- overground(Station1,Station3,Time), 
    time(Station3,Station2); 
    overground(Station1,Station3,Time), 
    time(Station2,Station3). 
time(Station1,Station2) :- overground(Station1,_,Time), 
    overground(_,Station2,Time). 
time(Station1,Station2) :- overground(Station2,_,Time), 
    overground(_,Station1,Time). 

我曾嘗試添加列表,並與「時間」追加,但沒有運氣。

*是它的一個分號。

還有另一個文件,它具有格式爲「overground(X,Y,Z)」格式的所有地上站和時間。「即地上(Kenton,Southkenton,2)。其中顯示station1,station2以及從1到2所需的時間。

我試圖瀏覽整個數據庫,找到X和Y(問題5),然後將所有Z在兩個電臺之間,並將其列入清單。

+0

我重新格式化了代碼,以使其更易於閱讀。我很抱歉,如果這實際上不再是合法的Prolog,但我無法忍受以比例字體閱讀代碼,而且我還厭惡代碼片段上的水平滾動條。所以。在重新格式化代碼時,我注意到中間附近有一個';',應該是分號還是逗號? – sarnold 2011-12-18 22:25:48

回答

1

那麼,說實話你的問題5的答案需要一些重構。我會開始給你一些linksquestionsthe相同subject

一旦你已經想出瞭如何處理這種遞歸,你當前的問題的答案應該很容易。

+0

謝謝,我現在就看看他們! :) – daydream 2011-12-18 23:37:54