/* Sort maps in Picat. Note: sort_map/2 can be replaced with sort_map(Map,keys) -> Map.map_to_list().sort() sort_map(Map) -> Map.map_to_list().sort() sort_map(Map,values) -> Map.map_to_list().sort(2) This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ % import util. % import cp. main => go. go => M1 = [I=(random2() mod 20): I in 1..10].new_map(), println(m1=M1), println(m1_sorted=sort_map(M1,keys)), M2 = [(random2() mod 20)=I: I in 1..10].new_map(), println(m2=M2), println(m2_sorted=sort_map(M2,values)), % there is no problem with duplicate values M3 = [1=a,2=a,3=b,4=b], println(m3=M3), println(m3_sorted=sort_map(M3,values)), nl. % Use these instead: % Map.map_to_list().sort(2) % Map.map_to_list().sort() go2 => M1 = [I=(random2() mod 20): I in 1..10].new_map(), println(m1=M1), println(m1_map_to_list=M1.map_to_list()), println(m1_sorted=map_to_list(M1).sort()), M2 = [(random2() mod 20)=I: I in 1..10].new_map(), println(m2=M2), println(m2_sorted=map_to_list(M2).sort(2)), % there is no problem with duplicate values M3 = new_map([3=b,4=b,1=a,2=a]), println(m3=M3), println(m3_sorted=map_to_list(M3).sort()), println(m3_sorted=map_to_list(M3).sort(2)), nl. % % sort_map(Map,keys) : sort Map on keys % sort_map(Map,values): sort Map on values % sort_map(Map,values) = [K=V:_=(K=V) in sort([V=(K=V): K=V in Map])]. sort_map(Map,keys) = sort([K=V:K=V in Map]). sort_map(Map) = sort_map(Map,keys).