我有一段代码,它基本上需要将一个列表作为条目添加到更大的列表中。所以 NewBoardsList 应该包含在 moves_generate_board 函数中生成的所有 boards。问题是我在 Prolog 中得到了 False。有什么帮助吗?
moves((Colour,_),Board,NewBoardsList):- other_colour(Colour,OtherColour), findall((X,Y,OtherColour,N), (member((X,Y,OtherColour,N),Board), threaten_by(Colour,(X,Y,OtherColour,N),Board)), Options), moves_generate_board(Options,Board,NewBoardsList). moves_generate_board([],Board,BoardsList). moves_generate_board([(X,Y,_,_)|T],Board,List):- replace((X,Y,-,-),Board,NewBoard), moves_generate_board(T,Board,[NewBoard|List]).
回答:
我猜问题出在 moves_generate_board/3
中,它看起来很奇怪。也许你想要的是:
moves_generate_board([],_,[]). moves_generate_board([(X,Y,_,_)|T],Board,[NewBoard|List]):- replace((X,Y,-,-),Board,NewBoard), moves_generate_board(T,Board,List).
还有关于 replace((X,Y,-,-),...
的那些 -
(破折号)….我不确定那是什么意思