PROLOG返回生成的最小列表的大小

问题描述 投票:0回答:1

我有一个谓词,可以在单个查询中生成多个列表。

在所有生成的列表中,是否可以找到具有最小大小的列表并存储/返回该大小的值?例如:

?- genList(List).

List = [1,2,3,4,5] ;
List = [6,7,8,9,10,11,12,13] ;
List = [14,15,16,17,18,19] ;
List = [20,21] ;
...

这里最小的列表是[20,21],大小为2

理想情况下,我希望谓词将返回值2

感谢您的帮助。在此先感谢:)

list prolog size min predicate
1个回答
2
投票

使用标准setof/3谓词和事实上的标准谓词length/2,请尝试:

?- setof(List, gen_list(List), [Smaller| _]), length(Smaller, Length).

也许可以修改gen_list/1谓词以返回生成列表的长度?这样可能会更有效率。

© www.soinside.com 2019 - 2024. All rights reserved.