我正在寻找format += "\"" + user + "\"";
的替代方案。我目前无法使用内置版本。
如果可用,我需要的语法将如下int[] anArray = new int[200];
for (int j = 0; j <anArray.length; j++)
{
anArray[j] = 500 + j;
}
。列表中的元素看起来像sort/4
。结果必须根据Value参数按降序排序。
用于测试目的的示例列表:
[[16:x:y,z:a]:[],[64:x:y,z:a]:[],[4:x:y,z:a]:[],[ 1024:x:y,z:a]:[],[0:x:y,z:a]:[],[100:x:y,z:a]:[],[50:x:y ,z:a]:[],[ - 100:x:y,z:a]:[],[0:x:y,z:a]:[]]
答案 0 :(得分:2)
只需提取密钥,将其放在结构前面,调用sort / 2(或msort / 2,以避免丢失重复项),然后从排序列表中删除密钥。
可以使用相同的代码(列表访问)将密钥放在前面并将其删除。最后一步将反转列表,以降序。
alternative_sort(Structs, Sorted) :-
structs_keyed(Structs, Keyed),
sort(Keyed, Temp),
structs_keyed(TempR, Temp),
reverse(TempR, Sorted).
structs_keyed(Sorted, Temp) :- % assume library(yall) available
maplist([S,K]>>(S=([Value|_]:_),K=Value/S), Sorted, Temp).
是真的,因为排序键值是第一个值元素,可以简化为
alternative_sort(Structs, Sorted) :-
sort(Structs, Ascending),
reverse(Ascending, Sorted).