2012-10-27 66 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