yaz/commit
sort by sum of values
author | Michiel Hildebrand |
---|---|
Mon Apr 23 15:05:18 2012 +0200 | |
committer | Michiel Hildebrand |
Mon Apr 23 15:05:18 2012 +0200 | |
commit | 190ac89ac61c11322fb010c68074dbd4d2418398 |
tree | a93e14147c446390bffde6cafa94003266dd9b5d |
parent | e20d090dd3eca447281adabf33549eb3c3139da6 |
Diff style: patch stat
diff --git a/lib/yaz_util.pl b/lib/yaz_util.pl index 2db5f87..9c52ef4 100644 --- a/lib/yaz_util.pl +++ b/lib/yaz_util.pl @@ -3,6 +3,7 @@ list_offset/3, list_limit/4, pairs_sort_by_value_count/2, + pairs_sort_by_value_sum/2, arg_key/3, sort_by_arg/3, sort_by_arg/4, @@ -114,6 +115,25 @@ pairs_value_count([Key-Values|T], [Count-Key|Rest]) :- length(Values, Count), pairs_value_count(T, Rest). +%% pairs_sort_by_value_sum(+Pairs:key-list, +%% -Sorted:listcount-key) +% +% Sorted is a list with the keys of Pairs sorted by the sum +% of the elements in value list. + +pairs_sort_by_value_sum(Grouped, Sorted) :- + pairs_value_sum(Grouped, Counted), + keysort(Counted, Sorted0), + reverse(Sorted0, Sorted). + +pairs_value_sum([], []). +pairs_value_sum([Key-Values|T], [Count-Key|Rest]) :- + sumlist(Values, Sum), + length(Values, Length), + Count is Sum/Length, + pairs_value_sum(T, Rest). + + %% sort_by_arg(+ListOfTerms, +Arg, -SortedList) %