的指定位置我是新來的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