Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn hyp [x y r]
- (Math/sqrt (+ (Math/pow (Math/abs (- r x)) 2)
- (Math/pow (Math/abs (- r y)) 2))))
- (defn dist [x y r] (Math/abs (- (hyp x y r) r)))
- (defn circle [r]
- (let [rep (for [x (range (inc (* r 2))) y (range (inc (* r 4)))]
- {:x x :y y :val \ })
- circle? (fn [c] (let [d (dist (:x c) (double (/ (:y c) 2)) r)]
- (cond (<= d 0.25) \#
- (<= d 0.75) \=
- (<= d 1.5) \-
- :else \ )))]
- (map circle? rep)))
- (defn group [r c]
- (let [tail (drop r c)]
- (if (empty? tail)
- [c]
- (lazy-cat [(take r c)] (group r tail)))))
- (defn get-rows [c] (map #(apply str %) c))
- (defn echo-circle [c] (doall (map prn c)))
- (defn simple-circle [r] (get-rows (group (inc (* r 4)) (circle r))))
- ; IDEA:
- ; Given radius r,
- ; iterate over 0 - r * 2 rows
- ; Decide for 0 - r * 4 columns
- ; (Can be done in parallel ie multi-dim seq of agents)
- ; Just str the seq
- (echo-circle (simple-circle 10))
Add Comment
Please, Sign In to add comment