#373
The Ultimate sorter
 

Difficulty:Medium
Topics:Real life cases List of Maps


Mission: "The Ultimate Sorter" meminta bantuan elo untuk mengorganisir data sebuah database. Diberikan sebuah list yang berisi banyak maps, di mana setiap map mengandung keys :id, :a, :b, dan :c dengan values numerik. Tugas lo adalah untuk mengurutkan list tersebut berdasarkan nilai :a secara ascending, kemudian :b secara descending, dan terakhir :c secara ascending. Jika ada dua maps dengan nilai :a, :b, dan :c yang sama, pertahankan urutan asli mereka.
test not run
(= (__ [{:id 1 :a 2 :b 5 :c 1} {:id 2 :a 1 :b 2 :c 3} {:id 3 :a 2 :b 5 :c 2} {:id 4 :a 1 :b 3 :c 2}])
   [{:id 2 :a 1 :b 2 :c 3} {:id 4 :a 1 :b 3 :c 2} {:id 1 :a 2 :b 5 :c 1} {:id 3 :a 2 :b 5 :c 2}])
test not run
(= (__ [{:id 1 :a 3 :b 1 :c 4} {:id 2 :a 2 :b 2 :c 2} {:id 3 :a 3 :b 2 :c 1}])
   [{:id 2 :a 2 :b 2 :c 2} {:id 3 :a 3 :b 2 :c 1} {:id 1 :a 3 :b 1 :c 4}])
test not run
(= (__ []) [])
test not run
(= (__ [{:id 1 :a 1 :b 1 :c 1} {:id 2 :a 1 :b 1 :c 2} {:id 3 :a 1 :b 1 :c 3}])
   [{:id 1 :a 1 :b 1 :c 1} {:id 2 :a 1 :b 1 :c 2} {:id 3 :a 1 :b 1 :c 3}])


Code which fills in the blank: