的指定位置我是新来的Prolog,现在我“在列表L中的位置4th元素E不是”卡住这个线索序言 - 检查一个元素没有在列表
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).
或
012一些愚蠢的方式,我比较列表notin4(X,L):- not(set_equal([_,_,_,X],L).
但它不工作:(
任何人都可以指向我了另一种方式来解决这个线索? 非常感谢!
你的“的意思,但它不”工作“?它做什么呢? – Carcigenicate
@Carcigenicate:实际上,这个问题可以在没有这个线索的情况下解决(并且结果是OK)。我添加了这个线索来测试我的类型为“E不在L中的第四个”的序言代码是否正确。但是,在我添加这个线索之后,输出结果出错了。 –
正确的序言方式:'notin4(X,[_,_,_,X | _]): - !,失败.' – CapelliC