相关疑难解决方法(0)

Prolog:过滤清单?

我目前正在开发一个关于Prolog的非常短的项目,并且试图将我创建的"过滤器"应用到列表中.我有你可以称之为过滤器的东西,但我无法应用它.如果我说明一下会更好:

filter(A, B) 
Run Code Online (Sandbox Code Playgroud)

...如果满足某些条件,则输出'true'.

filterList(A, [X, Y, Z])
Run Code Online (Sandbox Code Playgroud)

...输出一个列表,其中包含第二个参数中使过滤器输出为false的所有元素.(因此,如果过滤器(A,X)为真,则输出为[Y,Z]).

我已准备好"过滤器"功能,但现在我需要将它应用于第二个示例中所示的列表,排除在应用第一个参数时过滤器返回true的所有元素.

因此,如果过滤器是简单的A == B,则该函数应该接收A [A,B,A,C,D,A]并输出[B,C,D],删除了所有元素显然,过滤器适用.

我在功能的基本结构方面遇到了麻烦,所以如果有人能为这样的功能提供一个基本的轮廓,那将会有很大的帮助.我尽可能地简化了我的情况,所以我可以拿出你能提供的任何东西,并根据我的需要进行修改.

提前致谢!

list prolog filter meta-predicate

16
推荐指数
2
解决办法
1万
查看次数

Prolog计数列表元素高于n

我是Prolog的新手,所以我在某项任务中遇到了一些问题.任务是编写尾递归谓词count_elems(List,N,Count)条件List_Element > N, Count1 is Count+1.

我的方法:

count_elems( L, N, Count ) :-
   count_elems(L,N,0).
count_elems( [H|T], N, Count ) :-
   H > N ,
   Count1 is Count+1 ,
   count_elems(T,N,Count1).
count_elems( [H|T], N, Count ) :-
   count_elems(T,N,Count).
Run Code Online (Sandbox Code Playgroud)

错误信息:

ERROR: toplevel: Undefined procedure: count_elems/3 (DWIM could not correct goal)
Run Code Online (Sandbox Code Playgroud)

我不太清楚问题出在哪里.thx任何帮助:)

prolog

3
推荐指数
1
解决办法
2141
查看次数

在Prolog列表中查找2的幂

我正在尝试在Prolog(SWI Prolog)中创建一个列表,并检查哪些数字是2的幂,然后查找列表中特定数字的次数(在此示例中,我试图查找该数字的次数)列表中有3个).举个例子,如果你问

?- check([0,2,3,-5,-2,1,8,7,4], MULT2, THREE).
Run Code Online (Sandbox Code Playgroud)

你应该看到

MULT2=[2,8,4] 
THREE=1 
Run Code Online (Sandbox Code Playgroud)

我第一次尝试找到一个解决方案是用头部搜索列表并执行头部mod 2 = 0来查找所有2次幂的数字,但是出了点问题我只得到"假"作为答案.

list prolog clpfd clpz

2
推荐指数
1
解决办法
823
查看次数

标签 统计

prolog ×3

list ×2

clpfd ×1

clpz ×1

filter ×1

meta-predicate ×1