假設我有一個列表M = [[1/4,2/2,3/5,4/3,5/1],[1/3 ,2/5,3/2,4/4,5/1],[1/5,2/3,3/1,4/4,5/2],[1/4,2/1,3]/3,4/5,5/2],[1/5,2/2,3/4,4/1,5/3],[1/1,2/4,3/2,4/5 ,5/3],[1/2,2/5,3/3,4/1,5/4],[1/1,2/3,3/5,4/2,5/4], [1/3,2/1,3/4,4/2,5/5],[1/2,2/4,3/1,4/3,5/5]]。序言 - 如何檢查列表是否包含某個項目
我只想返回包含特定項目的列表,例如3/5。
我試着寫,看起來像函數:
include([X/Y|Rest],I,J):-
X=:=I,
Y=:=J,
include(Rest,I,J).
pick([Item|Rest],I,J,Final):-
include(Item,I,J),
pick(Rest,I,J,[Item|R]).
,這樣我可以查詢選秀權(男,3,5,F),使F包含已在其3/5的列表。我寫的功能無法正常工作,你能幫我解決嗎?
如果要檢查列表是否包含成員,請使用'memberchk/2'。所以'memberchk(I/J,Item)'成功,如果'I/J'在'Item'列表中。你的'include/3'謂詞沒有基本情況,並且試圖確保*給定列表中的每個*元素都是'I/J',所以它總是失敗。 – lurker