1

私は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) ], ... ]

私が言おうとしていることが理解できることを願っています。下手な英語で申し訳ありません

4

1 に答える 1

1

flatten /2 が正しい出力を得るのに役立つかどうかを確認してください。AdjOfAll/3 への最上位呼び出しの後に配置します。

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

ところで、述語の名前が正しいと確信していますか? 通常は小文字です。

于 2012-10-28T07:31:20.070 に答える