gpt4 book ai didi

list - 测试列表是否代表一个没有重复的集合的过程

转载 作者:行者123 更新时间:2023-12-04 19:48:37 25 4
gpt4 key购买 nike

在 Prolog 中,如何编写可用于测试列表是否表示无重复集的过程?

最佳答案

有几种方法可以做到这一点。 @thanosQR 指向 SWI-Prolog 的 is_set/1 是正确的,但如果您想要一个可移植的解决方案,您可以根据 setof 定义该谓词:

is_set(Lst) :-
setof(X, member(X, Lst), Set),
length(Lst, N),
length(Set, N).

如果列表的元素数量等于其元素的 setof 中的元素数量,则列表不包含重复项。

您还可以使用(我相信是非标准的,但通常可用的)sort/2,它可以消除重复项:

is_set(Lst) :-
sort(Lst, Set),
length(Lst, N),
length(Set, N).

这需要 O(n lg n) 时间来运行。

关于list - 测试列表是否代表一个没有重复的集合的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007080/

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