Планирование пролога без нажатия «;» каждый раз - PullRequest
0 голосов
/ 09 мая 2018

У меня есть следующий файл с присутствующим предикатом, который символизирует, что каждый студент посещает определенный курс (первый аргумент: 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 ).

...