我有以下文件,其中谓词出现,表示每个学生都参加某个课程(第一个参数:Student_ID,第二个参数:Course_ID)。
attends(476, c216).
attends(478, c216).
attends(484, c216).
attends(487, c216).
attends(491, c216).
我想创建一个谓词函数,如下所示:
function(W1,L,E):-
bagof(C,attends(Y,C), L1),intersect(L1,W1,L),length(L,E).
%W1 : Week-1 (List: contains courses that will be exams on).
%L : List of intersection between students courses and the ones that
% will be exams on that week(W1). (It is returned only for
% debugging, i don't actually need this
% E : INT : Number of courses the student will be examined on the 1st week
其中W1(第1周)将是一个包含3门课程的列表(例如W1 = [c216,c205,c902]),E将是学生将被检查的课程数。
问题是每个学生都会有回溯所以我必须按“;”。因此,对于每个学生,有一个不同的E.而我想要的是将所有这些E值放在一个列表中而不按“;”,然后看看有多少E值大于2(> ; 2)