1
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.
을 수행 할 때 당신의 프롤로그 라이브러리 (aggregate)가있는 경우 난 당신이 할 수있는 N의 값을 추가하고 ...... "총 = 3" 가 하나라도 제발 도움이 될 수 있습니다
이미있는 'count' 조건부를 사용하여 솔루션을 만들 수 있습니다. 'count '의'X' 인자가 하나의 원소 인 대신'L'리스트로 만드십시오. '[X | Q]'를 반복 할 때마다'X'가'L'의 멤버라면, 카운트를 증가시킵니다. 그러면'count ([.,?,!], L, N)로 호출 할 수 있습니다 .' – lurker