Q
프롤로그는 차이
0
A
답변
2
검사된다
diffSet([], X, X).
diffSet([H|T1],Set,Z):-
member(H, Set), % NOTE: arguments swapped!
!, delete(T1, H, T2), % avoid duplicates in first list
delete(Set, H, Set2), % remove duplicates in second list
diffSet(T2, Set2, Z).
diffSet([H|T], Set, [H|Set2]) :-
diffSet(T,Set,Set2).
0
일부러이 그것을위한 기본 기능을 회피 @ chac 언급, 이것은 일을 부끄럽지 않은 방법입니다.
notcommon([], _, []).
notcommon([H1|T1], L2, [H1|Diffs]) :-
not(member(H1, L2)),
notcommon(T1, L2, Diffs).
notcommon([_|T1], L2, Diffs) :-
notcommon(T1, L2, Diffs).
alldiffs(L1, L2, AllDiffs) :-
notcommon(L1, L2, SetOne),
notcommon(L2, L1, SetTwo),
append(SetOne, SetTwo, AllDiffs).
? alldiffs([a,b,c,d], [a,b,e,f], X).
X = [c, d, e, f] .
0
또는 내장 만 사용하십시오. 하지만 처음부터, 두 번째 목록에서
notcommon(L1, L2, Result) :-
intersection(L1, L2, Intersec),
append(L1, L2, AllItems),
subtract(AllItems, Intersec, Result).
?- notcommon([a,b,c,d], [a,b,e,f], X).
X = [c, d, e, f].
관련 문제
- 1. 프롤로그는 문자 체인
- 2. 프롤로그는 "+"로 대체 "-"
- 3. 프롤로그는 - 매개 변수로 목록을 보내는
- 4. 프롤로그는 재귀 적으로 가장 큰 노드를 찾습니다.
- 5. TSQL 차이 문자열의 차이
- 6. 차이 차이 사이 란
- 7. 차이
- 8. 차이
- 9. 차이
- 10. 차이
- 11. 차이
- 12. 차이
- 13. 차이
- 14. 차이
- 15. 차이
- 16. 차이 []
- 17. 차이
- 18. 차이
- 19. 차이
- 20. 차이
- 21. 차이
- 22. 차이
- 23. 차이
- 24. 차이
- 25. 차이
- 26. 차이
- 27. 차이
- 28. 차이
- 29. 차이
- 30. 차이
왜 제거 중복 : 당신은 작업을 완수하기를 원한다면? – false
@false : delete (T1, H, T2)가 작동해야한다고 생각합니다. – CapelliC