prolog列表操纵

时间:2010-05-12 23:24:51

标签: prolog artificial-intelligence

我有以下代码,基本上需要将列表作为项添加到更大的列表中。因此NewBoardsList应该包含moves_generate_board函数中生成的所有板。问题是我在Prolog中得到一个假。有帮助吗?

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]).

1 个答案:

答案 0 :(得分:2)

我猜问题出现在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,-,-),...那些-(破折号)......我不确定这意味着什么