如何定义这样的谓词:单词出现在列表中的次数?

时间:2015-08-08 04:41:27

标签: prolog

我试图定义一个谓词count(Word,List,N),当N为时,该谓词为真 单词Word出现在列表列表中的次数。例如

    count(my, [the, friend, of, my, enemy, is, not, my,enemy,nor,my,friend], N)
对于N = 3,

应为真。

以下是我到目前为止所尝试的内容:

count(Word, [], 0). 
count(Word, [Word|Tail], N) :-
    count(Word, Tail, NofTail), N is 1 + NofTail.
count(Word, [OtherWord|Tail], NofTail) :-
    OtherWord \= Word, count(Word, Tail, NofTail).

当我在RPEL中尝试时:

?- count(s,[s,z],1).
true ;
false. %note here

?- count(s, [s,s,s,z], 3).
true ;
false. %note here

?- count(s, [s,s,s,z], 1).
false.

我做对了吗?如果没有,为什么?如何解决?

0 个答案:

没有答案