如何检查prolog列表中是否存在某种模式

时间:2017-04-10 19:48:27

标签: list prolog

我试图实现一个prolog预测,检查某个模式是否(x,m)存在于列表中,或者m存在于列表的最末端并计算其出现次数我永远不会得到答案模式存在的次数。为什么?

我的尝试是:

    certainP([_,m],RESULT,W):-
    W is RESULT+1.
    certainP([x,m|T],START,RESULT):-
    RESULT is START+1,
    START is RESULT,
    certainP(T,START,RESULT).

1 个答案:

答案 0 :(得分:0)

这应该按照你的描述进行:

certainP([],N,N).
certainP([_],N,N).
certainP([x,m|T],N,N2) :-
    N1 is N+1,
    certainP(T,N1,N2).
certainP([_|T],N,N2) :-
    certainP(T,N,N2).

这假定在查询中为中间参数提供了初始数值。