Advertisement
bs9o

task5.1

May 27th, 2022
2,117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (def cores-number 6)
  2.  
  3. (defn heavy-even? [n]
  4.   (Thread/sleep 10)
  5.   (even? n))
  6.  
  7. ;task5.1
  8.  
  9. (defn get-block-size [coll i]
  10.   (+
  11.     (int (/ (count coll) cores-number))
  12.     (if (< i (mod (count coll) cores-number))
  13.       1
  14.       0)))
  15.  
  16. (defn get-excess [coll i]
  17.    (+
  18.      (*
  19.        (int (/ (count coll) cores-number))
  20.        i)
  21.      (Math/min i (mod (count coll) cores-number))))
  22.  
  23. (defn pfilter [pred coll]
  24.   (->>
  25.     (reduce
  26.       (fn [x y]
  27.         (cons
  28.           (future
  29.             (doall (reverse
  30.                      (filter
  31.                        pred
  32.                        (take (get-block-size coll y) (drop (get-excess coll y) coll)))))) x))
  33.       '() (range cores-number))
  34.     (mapcat deref)
  35.     (reverse)
  36.     (doall)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement