我的数据库与此类似:
% happy(Person,Happiness)
happy(1,10).
happy(2,5).
happy(3,8).
happy(4,1).
我想对人们的幸福进行分类。
我编写了以下代码,它可以满足我的要求。然而它对我来说看起来很麻烦。有什么改进吗?
? - sortPeople(Ts).
Ts = [1, 3, 2, 4].
我的解决方案:
getFirst([],R,R).
getFirst([[H1,_]|T],F,R) :-
append([H1],F,R1),
getFirst(T,R1,R).
compareHappiness(X, [_,S1], [_,S2]) :- compare(X, S1, S2).
sortPeople(Ts) :-
findall([X,Y], happy(X,Y), List),
predsort(compareHappiness, List, SortedList),
getFirst(SortedList,[],Ts).