我有一个谓词,可以在单个查询中生成多个列表。
在所有生成的列表中,是否可以找到具有最小大小的列表并存储/返回该大小的值?例如:
?- 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
。
感谢您的帮助。在此先感谢:)
使用标准setof/3
谓词和事实上的标准谓词length/2
,请尝试:
?- setof(List, gen_list(List), [Smaller| _]), length(Smaller, Length).
也许可以修改gen_list/1
谓词以返回生成列表的长度?这样可能会更有效率。