せずに別のリストにリストから要素を追加するこれは私のコードです:名1またはName2は非結合リストにすでにあるかどうかを確認されて行うことになっているものPrologは重複
students([], NameList).
students([Name1+Name2+_|MoreProjects], [Name1,Name2|NameList]) :-
not_member(Name1, NameList),
not_member(Name2, NameList),
students(MoreProjects, NameList).
students([Name1+Name2+_|MoreProjects], [Name1|NameList]) :-
not_member(Name1, NameList),
not(not_member(Name2, NameList)),
students(MoreProjects, NameList).
students([Name1+Name2+_|MoreProjects], [Name2|NameList]) :-
not(not_member(Name1, NameList)),
not_member(Name2, NameList),
students(MoreProjects, NameList).
students([Name1+Name2+_|MoreProjects], NameList) :-
not(not_member(Name1, NameList)),
not(not_member(Name2, NameList)),
students(MoreProjects, NameList).
not_member(_, []).
not_member(X, [Head|Tail]) :-
X \= Head,
not_member(X, Tail).
、およびに追加します結果。
この正当なクエリ
students([ Dickens+Joyce+1,
Chekhov+Tolstoy+2,
Austen+Shakespeare+3,
Shirley+Byron+4
],
StudentList).
を実行すると、ちょうど私が偽与えます。コーディングをどのように調整すればよいですか?