gpt4 book ai didi

list - 检查任何元素的频率是否超过限制

转载 作者:行者123 更新时间:2023-12-01 06:49:56 25 4
gpt4 key购买 nike

我想解决一个问题,即我有一个 Prolog 元素列表。如果任何元素频率大于N,则返回false。我的期望如下。

?- frequency([1,2,2,2,5],3).
true.

?- frequency([1,2,2,2,2,5],3).
false.

我有一个获取特定元素频率的代码。对这个问题有任何想法。

count(_, [], 0) :-
!.
count(X, [X|T], N) :-
count(X, T, N2),
N is N2 + 1.
count(X, [Y|T], N) :-
X \= Y,
count(X, T, N).

最佳答案

使用 !

:- use_module(library(clpfd)).

If we build on auxiliary predicate list_counts/2, we can define frequency/2 like this:

frequency(Es, M) :-   list_counts(Es, Xss),   maplist(arg(2), Xss, Zs),   maplist(#>=(M), Zs).

Sample queries:

?- frequency([1,2,2,2,5], 3).
true.

?- frequency([1,2,2,2,2,5], 3).
false.

感谢 我们可以提出非常笼统的个问题——也可以得到合乎逻辑的答案!

?- frequency([A,B,C], 2).
A=B , dif(B,C)
; A=C , dif(B,C)
; dif(A,C), B=C
; dif(A,B), dif(A,C), dif(B,C).

关于list - 检查任何元素的频率是否超过限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526384/

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