假设我有这两个事实。
animal(fifi,10).
animal(fofo,20).如果我打电话给
animal(X,Y).然后Prolog会返回给我
X = fifi,
Y = 10 ;
X = fofo,
Y = 20.我需要做什么,让Prolog根据事实只返回Y值最高的动物X?
有没有可能只显示最高的Y值的X,而不是同时显示X和Y?
发布于 2011-12-14 00:51:41
当然,您可以构建所有动物及其值的列表,然后对列表进行排序并从中获取所需的元素:
max_animal(MaxAnimal):-
findall(Value-Animal, animal(Animal, Value), L),
keysort(L, Sorted),
reverse(Sorted, [_-MaxAnimal|_]).发布于 2011-12-14 01:32:31
或者:
max_animal(MaxAnimal) :-
findall(Y, animal(X, Y), Ys),
max_list(Ys, Max),
animal(MaxAnimal, Max).https://stackoverflow.com/questions/8492822
复制相似问题