목록이 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]).
F가의 3/5을 가지고 목록을 포함하도록 내가 선택 (M, 3,5, F)을 조회 할 수 있도록. 내가 작성한 기능이 제대로 작동하지 않습니다. 해결하도록 도와 주시겠습니까?
목록에 구성원이 있는지 확인하려면 'memberchk/2'를 사용하십시오. 그래서'memberchk (I/J, Item)'은'I/J'가'Item'리스트에 있다면 성공합니다. 'include/3' 술어에는 기본 경우가 없으며 주어진리스트의 모든 * 요소가'I/J'인지 확인하려고 시도하므로 항상 실패합니다. – lurker