次のようなファイル「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」または assert/retract を使用せずに、ナレッジ ベースから各学生の述語にアクセスし、各科目の平均点または平均パーセンテージを計算したいと考えています。次のようにバックトラッキングを使用したい場合があります。
find_score_all(X) :- student(Name,Percent,L),
write(Percent),nl,
fail.
find_score_all(_).
このアプローチでは、各要素にアクセスして書き込むことができますが、各「パーセント」値を要素としてリストに追加するか、「Percent1 is Total + Percent」のような述語を使用してパーセント値を合計してから見つける場合その平均、どうすればそうできますか?ナレッジ ベースは非常に大きいため、findall やrettract/assert を使用したくないことに注意してください。
どんな助けでも大歓迎です。