Prolog - 检查元素是否不在列表中的指定位置

时间:2017-04-16 12:43:16

标签: prolog

我是Prolog的新手,现在我不知道这个线索"元素E不在列表L&#34中的第4位;

value.share   value.like
2                10

我将列表比作

L = [_,_,_,E] => false

然后我使用一些像这样的愚蠢方式

set_equal([],[]).
set_equal([H|T],R):-
   member(H,R),
   remove(H,R,Rez),
   set_equal(T,Rez).

notin4(X,L):-
      set_equal([X,_,_,_],L)
   ;  set_equal([_,X,_,_],L)
   ;  set_equal([_,_,X,_],L).

但它不起作用:(

有人能指出我解决这个线索的另一种方法吗? 非常感谢你!

1 个答案:

答案 0 :(得分:2)

最简单的方式是:

list_not_nth(List, N, X) :-
    nth1(N, List, Y),
    dif(X, Y).

如果你知道你正在寻找第4个元素,你可以这样做:

list_not_4th([_,_,_,X|_], Y) :-
    dif(X, Y).
相关问题