2010-05-12 61 views
0

我有下面的代碼,基本上需要添加一個列表作爲一個項目更大的列表。所以NewBoardsList應該包含所有在moves_generate_board函數中生成的板子。問題是我在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]). 

回答

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,-,-),...那些-(破折號)......我不知道這意味着什麼