假设我有一个列表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,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]).
这样我就可以查询pick(M,3,5,F),这样F就包含了3/5的列表。我写的功能不能正常工作,你能帮我解决吗?
答案 0 :(得分:0)
正如潜伏者所说,使用会员并且不要忘记基本情况。
foo([],_,F).
foo([H|T],Item,[H|F]):-
member(Item, H),
foo(T,Item,F).
foo([_|T],Item,F) :-
foo(T,Item,F).