我的數據庫是與此類似:prolog:排序w.r.t.一些屬性
% happy(Person,Happiness)
happy(1,10).
happy(2,5).
happy(3,8).
happy(4,1).
我要排序的人w.r.t.他們的幸福。
我編碼以下,它做我想要的。不過,這對我來說看起來很麻煩。任何改進?
? - 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).
並非如此cumberstone!對我來說似乎沒問題。 – Haile