%%   知識情報処理実習 r8の練習問題 解答例

% 1.
attendants([],[]).
attendants([(Name,Age)|L],[Name|S]) :- attendants(L,S).

test8_1 :- attendants([(ann,80),(bob,40),(jim,20),(liz,16),(tom,65)],NL).

% 2.
average_age(L,Y) :- ages_list(L,YL), average(YL,Y).

ages_list([],[]).
ages_list([(Name,Age)|L],[Age|Ys]) :- ages_list(L,Ys).

sum_list([],0).
sum_list([X|Y],N) :- sum_list(Y,N1), N is N1+X.

list_length([],0).
list_length([_|Y],N) :- list_length(Y,N1), N is N1+1.

average(L,V) :- sum_list(L,S), list_length(L,N), V is S/N.

test8_2(Y) :- average_age([(ann,80),(bob,40),(jim,20),(liz,16),(tom,65)],Y).