Prolog 检查列表是否只包含零
在我的作业中,有人给了我一个问题,要求我编写一个Prolog程序,该程序将数字列表作为输入,如果列表 仅包含Prolog 检查列表是否只包含零,prolog,Prolog,在我的作业中,有人给了我一个问题,要求我编写一个Prolog程序,该程序将数字列表作为输入,如果列表 仅包含0s 我在如何使程序搜索零方面遇到了问题。例如,以下查询: ?- zero([0,0,0,0]). 应该给我们true,如果其中有非零的数字,则应该返回false。为什么要我们为您做家庭作业? 无论如何,这是非常简单的递归。比如: zero([]). zero([0|T]) :- zero(T). 只需继续剥离零,直到您的列表为空。这并不难;) 通常情况下,人们不会为此定义适当的谓词,
0s
我在如何使程序搜索零方面遇到了问题。例如,以下查询:
?- zero([0,0,0,0]).
应该给我们true,如果其中有非零的数字,则应该返回false。为什么要我们为您做家庭作业? 无论如何,这是非常简单的递归。比如:
zero([]).
zero([0|T]) :- zero(T).
只需继续剥离零,直到您的列表为空。这并不难;) 通常情况下,人们不会为此定义适当的谓词,而是将其用于以下目的:
..., maplist(=(0), Zs), ...
举一个具体的例子:
?- Zs =[A,B,C], maplist(=(0), Zs).
此查询对应于:
?- Zs = [A,B,C], call(=(0), A), call(=(0), B), call(=(0), C).
或者更简单:
?- Zs = [A,B,C], 0 = A, 0 = B, 0 = C.
如果您想将其定义为一个单独的谓词,请记住为其使用一个好的名称。列表中的每个元素都是一个零,该关系描述了此类零的整个列表。在这种情况下,列表的惯例是使用复数。因此零/1
:
zeros([]).
zeros([0|Zs]) :-
zeros(Zs).