Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 列表列表中的Prolog检查值_List_Prolog_Element - Fatal编程技术网

List 列表列表中的Prolog检查值

List 列表列表中的Prolog检查值,list,prolog,element,List,Prolog,Element,我正在编写一个棋盘游戏,我想检查是否可以移动。要做到这一点,我需要检查玩家移动到的位置是空的还是有可能的值。 然而,我不知道如何在不返回真或假的情况下做到这一点 例如: 假设你有一个矩阵,它代表一个电路板: [ [vv,vv,vv,vv,p1] [vv,aa,vv,vv,vv] [vv,vv,aa,vv,vv] [vv,p2,aa,vv,vv] ] 我想把p2移动到aa,这不是空的,但这是一个可能的移动。我怎样才能确定这是否是一个可能的举动?我有一个程序将元素放置在一个

我正在编写一个棋盘游戏,我想检查是否可以移动。要做到这一点,我需要检查玩家移动到的位置是空的还是有可能的值。 然而,我不知道如何在不返回真或假的情况下做到这一点

例如: 假设你有一个矩阵,它代表一个电路板:

[ [vv,vv,vv,vv,p1]
    [vv,aa,vv,vv,vv]
    [vv,vv,aa,vv,vv]
    [vv,p2,aa,vv,vv] ]
我想把p2移动到aa,这不是空的,但这是一个可能的移动。我怎样才能确定这是否是一个可能的举动?我有一个程序将元素放置在一个特定的位置,我正在尝试执行这个程序,检查我移动的位置是否是一个可能的位置

当前代码:

elementAt(Line, 1, Y, Element):- nth0(Y, Line, Element).
elementAt([Line|Tail], X, Y, Element) :- 
   Y > 1, 
   Y1 is Y-1,
   elementAt(Tail, X, Y, Element).

checkPosition(Board, X, Y):-
   elementAt(Board, X, Y, Element),
现在,在checkPosition,我想检查元素是否等于vv或aa。我该怎么做

% It is true, if 
% 1. X is the first element of the listoflists 
% 2. X is not first element of the listoflists, 
% however, it is a member of the first list in listoflists
% 3. X is a member of any other element in the listoflists

memberlist(X, [X|Xs]).
memberlist(X, [Y|Ys]) :- memberlist(X, Y).
memberlist(X, [Y|Ys]) :- memberlist(X, Ys).

我知道这是4年后发布的,希望它对任何遇到这个答案的人都有帮助。

检查位置(Board,X,Y):-nth0(X,Board,Line),nth0(Y,Line,Element),…
你需要检查
Element
如何
(Element==vv;Element==aa)
?现在我发现了另一个问题。我正在使用SICStus,当我运行它时,我发现这个错误,我无法删除:过程用户:nth0/3不存在我已经添加了库(列表)。我已经解决了nth0的问题@潜伏者,如果我使用你的代码,当它返回“否”时,程序停止。我如何解决这个问题,使它不会停止?