我是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) ], ... ]
我希望我能说的是可以理解的,对不好的英语
抱歉答案 0 :(得分:1)
查看flatten / 2是否可以帮助您获得正确的输出。将它放在最高级别调用AdjOfAll / 3之后。
...
AdjOfAll(State, NextSpace, ResultNested),
flatten(ResultNested, Result),
...
BTW你确定你的谓词命名正确吗?通常它们是小写。