gpt4 book ai didi

list - Prolog:过滤列表?

转载 作者:行者123 更新时间:2023-12-03 14:46:18 29 4
gpt4 key购买 nike

我目前正在做一个关于 Prolog 的非常短的项目,只是在尝试将我创建的“过滤器”应用于列表时遇到了困难。我已经准备好你可以称之为过滤器的东西,但我无法应用它。如果我说明一下会更好:

filter(A, B) 

...如果满足某些条件,则输出“真”。
filterList(A, [X, Y, Z])

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

我已经准备好“过滤器”函数,但现在我需要将它应用到列表中,如第二个示例所示,不包括使用第一个参数应用时过滤器返回 true 的所有元素。

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

我在函数的基本结构上遇到了麻烦,所以如果有人可以为这样的函数提供一个基本的大纲,那将会有很大的帮助。我已经尽可能地简化了我的情况,所以我可以接受你可以提供的任何东西,并根据我的需要进行修改。

提前致谢!

最佳答案

SWI-Prolog 提供 exclude/3和其他这样的元谓词。您的原始问题可以这样编码:

are_identical(X, Y) :-
X == Y.

filterList(A, In, Out) :-
exclude(are_identical(A), In, Out).

使用示例:
?- filterList(A, [A, B, A, C, D, A], Out).
Out = [B, C, D].

关于list - Prolog:过滤列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297996/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com