【发布时间】:2023-03-15 16:32:01
【问题描述】:
我需要获取列表中最大的 N 个元素。
我有谓词最大:
largest([X], X).
largest([X|T], K) :-
largest(T, Y),
K is max(X,Y).
现在我需要新的谓词 n_largest,它的工作原理如下:
?- n_largest([1, 2, 12, 33, 4, 15, 6], 2, List).
预期结果:列表:[33, 15]。
我已经做了这个谓词的小例子:
n_largest(List, 1, [X]) :- largest(List, X).
但我不知道如何重复最大 N 次并组成预期列表。
【问题讨论】:
-
您希望
n_largest([1,4,1], 3, R).的结果是什么? -
@lurker 这是一个好问题,我认为它也应该计算重复项。就像你在回答中所做的那样:)