給定一個列表L
我想查看一對P
是否出現在列表中。如果找到元素,則打印*Found*
。Prolog,檢查一對元素是否出現在列表中
例如:
L = [3,1,2,5,4,7].
P = (2,5).
鑑於這個例子中,我應該得到*Found*
作爲2,5
出現在列表L
第二和第三的位置。
這是我的做法,但我得到一個假答案。
search_pair([_|[]],_).
search_pair([X|T],(F,L)) :-
first(Y, T),
write('searching: '),write(F),write(' '),write(L),nl,
write('trying: '),write(X),write(' '),write(Y),nl,
((F == L , L = Y) -> (write('Found'))
search_pair(T,(F,L),R).
[Prolog - 如何檢查列表是否包含某些元素?]的可能的重複(http://stackoverflow.com/questions/5188084/prolog-how-to-check-if-a-list-includes-certain -elements) –
我正在尋找連續的對,這是事情:/ –
你有第6行的語法錯誤,缺少一個關閉paren和一個逗號。此外,'第一'沒有定義,我假設你最後一行應該調用search_pair/2而不是search_pair/3,這也是undefined – vmg