有人能解释一下预定义谓词forall应该如何查找列表中的最小值吗?
发布于 2010-12-12 20:48:31
对于列表L,您可以使用:
member(Min,L), forall(member(N,L), N>=Min).然而,虽然这是forall的一个很好的演示,但它的效率并不高(平方复杂度而不是线性复杂度)。
发布于 2012-11-23 22:35:52
或者您可以使用谓词findall/3
findall(Value, minimumValues(Value), minimumValuesList)它返回一个带有元素的列表(minimumValuesList) (右边是所有的最小值)。
发布于 2010-12-12 22:52:26
为什么要使用forall/2查找最小值?!
对于标准(线性)解决方案,用于选择最小/最大/...元素查看SWI-Prolog的min_list/2
?- listing(min_list).
lists:min_list([], A, A).
lists:min_list([A|C], B, E) :-
D is min(A, B),
min_list(C, D, E).
lists:min_list([B|A], C) :-
min_list(A, B, C).https://stackoverflow.com/questions/4421392
复制相似问题