私のデータベースはこれに似ています:
% 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).