2
나는이 목록의 보수를 찾을하려고 해요
을 제거하는 것 같다, 다음과 같은 코드를 가진 보편적 목록 L2하지 않습니다 SETOF :은/3은리스트 L1 제공, 중복
complement(L1, L2, Res):-
setof(X, (nth0(N, L2, X), not(member(X,L1))),Res).
하지만, 내 결과는 중복을 포함하고 내가 선호하는 것으로 목록 형태로 제공되지 않습니다 : 내가 인해 프롤로그에 내장 된 역 추적에 아마 생각
23 ?- complement([1,3], [-1,1,3,5,2,4,2,55,1,0], Res).
Res = [-1] ;
Res = [5] ;
Res = [2] ;
Res = [4] ;
Res = [2] ;
Res = [55] ;
Res = [0].
을하지만 난 포맷에 대해 이동이 문제를 해결하는 방법을 잘 모르겠어요 결과가 올바르게 표시되고 결과에서 중복 항목을 제거하도록 가져옵니다.
그걸 고쳤습니다. 고맙습니다. :) –
두 가지 방법, 즉 보완이 아닌 두 가지 모두에서 요소, 즉 대칭 차이뿐만 아니라 setof/findall/bagof를 사용하는 방법이 있습니까? 나는 그것을 긴 방법으로 해왔지만 위의 해결책은 이것을 달성하는데 사용될 수 있을까? – ildsarria
@ildsarria : 죄송합니다. 확실하지 않습니다. 대칭 차이를 계산할 수 있습니다 - IIRC - 도서관에서 (섭정) – CapelliC