У меня есть база знаний, состоящая из базы данных студентов в файле «students.pl», например:
% student(Name,Percent,List_of_Marks_in_3_subjects).
student('abc',83,[80,80,90]).
student('pqr',70,[70,60,80]).
student('xyz',76,[80,70,80]).
Я хочу получить доступ к каждому предикату учащегося из базы знаний и рассчитать средние оценки по каждому предмету или средний процент без использования «findall» или «утвердить/опровергнуть». Я могу использовать откат следующим образом:
find_score_all(X) :- student(Name,Percent,L),
write(Percent),nl,
fail.
find_score_all(_).
При таком подходе я могу получить доступ к каждому элементу и записать его, но если я хочу добавить каждое значение «Процент» в качестве элемента в список или просто использовать предикат, например «Процент1 - это общее + процент», чтобы суммировать процентные значения, а затем найти это среднее, как я могу это сделать? Обратите внимание, что я не хочу использовать findall или retract/assert и предпочтительно нахожу среднее значение за один проход через базу знаний, поскольку база знаний очень велика.
Любая помощь приветствуется.