prolog中的规则和查询帮助

时间:2013-11-03 08:42:26

标签: prolog

有以下事实:

student(ram, cs). // ram is student of cs branch

student(kiri,it).

student(akshay,cs).

student(sanjay,me).

我想编写一条规则来查找任何分支中的同学和查询以列出分支中的学生说cs。请帮忙。

如果我必须找到akshay的同学,我必须运行什么查询?

2 个答案:

答案 0 :(得分:2)

如果他们参加同一课程,两名学生是同学。

classmates(X, Y) :- student(X, A), student(Y, A), X @< Y.

@</2这里是为了抑制重复。仅仅(A,B)没有(B,A)(A,A)(B,B)就足够了。

?- classmates(X, Y).
X = akshay,
Y = ram ;
false.

列出分行cs中的所有学生:

?- student(X, cs).
X = ram ;
X = akshay.

答案 1 :(得分:0)

这是对this previous问题的跟进,让我们保持同样的心情......

classmates(Classmates) :-
  aggregate(set(P), B^Q^(student(P,B), student(Q,B), P\=Q), Classmates).

产量

?- classmates(L).
L = [akshay, ram].