Prolog列表里面有列表

时间:2012-10-27 19:33:35

标签: prolog

我是Prolog的新手我有这个代码(如果不是很友好的话,我很抱歉)

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

我的问题是Adj返回[ (element_1), ... , (element_n) ]

我对AdjOfAll的目标是获得,

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

但是我得到了

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

我希望我能说的是可以理解的,对不好的英语

抱歉

1 个答案:

答案 0 :(得分:1)

查看flatten / 2是否可以帮助您获得正确的输出。将它放在最高级别调用AdjOfAll / 3之后。

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

BTW你确定你的谓词命名正确吗?通常它们是小写