如何只计算列表中的数字元素(PROLOG)

时间:2017-06-12 23:19:45

标签: prolog

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

这会计算所有元素,但我只需要计算数字。

2 个答案:

答案 0 :(得分:3)

Prolog有一个ISO内置谓词number/1,用于检查给定参数是否为数字。

我们可以简单地使用if-then-else语句来增加N is N1+1或设置N = N1,如:

count([],0).
count([H|Tail], N) :-
    count(Tail, N1),
    (  number(H)
    -> N is N1 + 1
    ;  N = N1
    ).

答案 1 :(得分:1)

您可以使用number/1 iso内置谓词:

count([],0).
count([H|Tail], N) :- number(H),count(Tail, N1), N is N1 + 1.
count([H|Tail], N) :- \+number(H),count(Tail, N).