my_list([this,is,a,dog,.,what,is,your,name,?,i,simply,adore,you,!]).
count(_, [], 0) :- !.
count(X, [X|Q], N) :- !, count(X, Q, N1), N is N1+1.
count(X, [_|Q], N) :- count(X, Q, N).
number_of_sentence(N) :- my_list(L),count(.,L,N).
number_of_sentence(N) :- my_list(L),count(?,L,N).
number_of_sentence(N) :- my_list(L),count(!,L,N).
在上面的代码中,列表中有三种类型的句子(my_list)1肯定,1问题和1感叹,当我这样做时
?- number_of_sentence(N).
N = 1 ;
N = 1 ;
N = 1.
现在如何在N中添加值并显示“total = 3” 请任何人帮助我......
答案 0 :(得分:1)
如果您的Prolog有库(aggregate),您可以
?- aggregate(sum(C), (my_list(L), (count(.,L,C);count(?,L,C);count(!,L,C))), N).
但是mbratch的建议似乎更好。另一种方法,没有count / 3:
?- aggregate(count, E^(my_list(L), member(E, L), memberchk(E, [.,?,!])), N).
L = [this, is, a, dog, '.', what, is, your, name|...],
N = 3.