View Single Post
Sitat av Tias Vis innlegg
Oj, det ble det visst. Merker jeg er rusten i Python. Nice!

Kode

(print (/ (apply #'+ (loop repeat 1000 collect (random 1000))) 1000))
Vis hele sitatet...
Bare for sammenligning: I Clojure har man ikke loop-makroen. Derfor ville jeg skrevet dette slik:

Kode

(println (/ (apply + (take 1000 (repeatedly #(rand-int 1000)))) 1000))
Men for lesbarhetesn skyld kan jeg også snu litt på det, f.eks.:

Kode

(println (/ (->> #(rand-int 1000) repeatedly (take 1000) (apply +)) 1000))
Skal jeg fjerne duplisering og gjøre det mere lesbart for utviklere som ikke kan Lisp blir det kanskje noe sånn:

Kode

(let [n 1000
       random-numbers-to-infinity-and-beyond (repeatedly #(rand-int 1000))
       random-numbers (take n random-numbers-to-infinity-and-beyond)
       sum (apply + random-numbers)
       average (/ sum n)]
  (println average))