From 1d1e9c655f29bb909d271c35d3eb25336de30b3e Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 7 Dec 2018 20:23:58 +0530 Subject: [PATCH] emp_sort: Sort a list of employees by salary in 4 languages Signed-off-by: Joseph Nuthalapati --- emp_sort/emp_sort.gist | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 emp_sort/emp_sort.gist diff --git a/emp_sort/emp_sort.gist b/emp_sort/emp_sort.gist new file mode 100644 index 0000000..bcc5116 --- /dev/null +++ b/emp_sort/emp_sort.gist @@ -0,0 +1,22 @@ +Clojure + +(def emps (map (fn [x] {:name (str "employee" x) :salary (* 100 x)}) (take 10 (range 1 10)))) +(take (/ (count emps) 10) (reverse (sort-by :salary emps))) + +Haskell + +import Data.List (sortBy) + +data Employee = Employee {name :: String, salary :: Double } deriving (Show) +let emps = map (\x -> Employee ("emp" ++ show x) (x * x)) [1..10] in take ((length emps) `div` 10) (sortBy (\x y -> compare (salary y) (salary x)) emps) + +Scala + +case class Employee(name: String, salary: Double) +val emps = (1 to 10).map(i => Employee("employee" + i, i * 100)) +emps.sortBy(_.salary).reverse.take(math.ceil(emps.size / 10.0)) + +Python + +emps = {"employee"+str(i): i*100 for i in range(1, 11)} +[(key, value) for key, value in sorted(emps.items(), key=lambda (k,v): (-v,k))][0:len(emps)/10] \ No newline at end of file -- 2.43.0