Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (def cores-number 6)
- (defn heavy-even? [n]
- (Thread/sleep 10)
- (even? n))
- ;task5.1
- (defn get-block-size [coll i]
- (+
- (int (/ (count coll) cores-number))
- (if (< i (mod (count coll) cores-number))
- 1
- 0)))
- (defn get-excess [coll i]
- (+
- (*
- (int (/ (count coll) cores-number))
- i)
- (Math/min i (mod (count coll) cores-number))))
- (defn pfilter [pred coll]
- (->>
- (reduce
- (fn [x y]
- (cons
- (future
- (doall (reverse
- (filter
- pred
- (take (get-block-size coll y) (drop (get-excess coll y) coll)))))) x))
- '() (range cores-number))
- (mapcat deref)
- (reverse)
- (doall)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement