假設我們有一個棋盤上的機器人,可以像國王一樣移動。序言:在迷宮中尋找路徑
董事會與從[1,1]到[8,8]的座標。
起始位置是[1,1]最後是[8,8]。列表X包含障礙物座標列表[[1,4],[2,5],[5,6]]。問題是:機器人是否有可能從起始位置移動到最終位置。
我做了這個謂詞:
path([A,B],_):- A is 8, B is 8.
path([A,B],X):-
possibleMoves(A,B,L), % possibleMoves returns a list of all the possible coords that
the robot can go to. (Example for [1,1] are [[0,1],[0,0],[2,1]...])
member([Ex,Ey],L), % member generates all the possible members from the list L
not(member([Ex,Ey],X)), % if this member is not member of the "forbidden ones"
Ex<9,Ex>0,Ey<9,Ey>0, % and its coords are on the board
path([Ex,Ey],X).
isTherePath(X):- possibleMoves(1,1,L),
member(E,L),
path(E,X).
但有一個錯誤,它不返回任何值。遞歸永不止步我找不到原因。
第一行的意圖是什麼?它將始終將8分配給A和B.我想你想要比較而不是分配。 – 2014-11-20 20:32:51