2012-10-27 92 views
1

我在序言我有這樣的代碼共新手列表(對不起,如果它不是非常友好的閱讀)Prolog的列表裏面

AdjOfAll(State,[FreeSpace],[Result]):- 
    Adj(State,FreeSpace,Result). 
AdjOfAll(State,[Space|NextSpace],[X|Xs]):- 
    AdjOfAll(State,NextSpace,Xs), 
    Adj(State,Space,X). 

我的問題是,調返回[ (element_1), ... , (element_n) ]

我與AdjOfAll目標是獲得,

[ (element_1), ..., (element_n), (element_1_from 2nd adj), ... ] 

,但我得到

[ [ (element_1), ... ,(element_n)] , [ (element_1_from 2nd adj) ], ... ] 

我希望它的理解就是我想說的,遺憾的英語不好

回答

1

看看flatten/2可以幫助您得到正確的輸出。將其置於頂層調用AdjOfAll/3之後。

... 
AdjOfAll(State, NextSpace, ResultNested), 
flatten(ResultNested, Result), 
... 

順便說一句你確定你的謂詞命名是否正確?通常他們是小寫字母

+0

謝謝你鋪平工程。順便說一下,這是我的翻譯更容易閱讀,但是在原來是adjOfAll :) – Opetion