我有这样的事实:
like(sara,'data base',3).
like(sara,'math',3).
like(sara,'physics',3).
like(sara,'law',3).
like(sara,'history',5).
like(sara,'science',1).
like(tom,'chemistry',3).
like(tom,'data base',2).
like(tom,'logic',3).
like(tom,'law',3).
like(tom,'history',3).
like(tom,'science',3).
:- dynamic same_like/3.
我想比较事实以找到一个 sara 和 tom 都喜欢但水平不同的主题,所以我要做的是:
comp1 :-
like(sara, NofC1, X),
like(tom, NofC2, Y),
NofC1 = NofC2,
asserta( same_like(sara, NofC1, X) ),
asserta( same_like(tom, NofC2, Y) ),
same_like(sara, NC1, A),
same_like(tom, NC2, B),
NC1 = NC2,
A =\= B,
write('sara and tom like the same subject " '),
write(NC1),
write(' " .But with different level, sara= '),
write(A),
write(' And tom = '),
write(B),
nl,
fail.
答案是正确的,但答案中有重复:
sara and tom like the same subject " data base " .But with different level, sara= 3 And tom = 2
sara and tom like the same subject " data base " .But with different level, sara= 3 And tom = 2
sara and tom like the same subject " history " .But with different level, sara= 5 And tom = 3
sara and tom like the same subject " data base " .But with different level, sara= 3 And tom = 2
sara and tom like the same subject " science " .But with different level, sara= 1 And tom = 3
sara and tom like the same subject " history " .But with different level, sara= 5 And tom = 3
sara and tom like the same subject " data base " .But with different level, sara= 3 And tom = 2
false
.
问题是我怎样才能消除这种重复???:(