15 lines
488 B
Clojure
15 lines
488 B
Clojure
(let [bounds (set (range 100))
|
|
xs [1 0 -1 0] ys [0 -1 0 1]]
|
|
(loop [dir 0 x 50 y 50
|
|
grid {[x y] false}]
|
|
(if (and (bounds x) (bounds y))
|
|
(let [cur (not (grid [x y]))
|
|
dir (mod (+ dir (if cur -1 1)) 4)]
|
|
(recur dir (+ x (xs dir)) (+ y (ys dir))
|
|
(merge grid {[x y] cur})))
|
|
(doseq [col (range 100)]
|
|
(println
|
|
(apply str
|
|
(map #(if (grid [% col]) \# \.)
|
|
(range 100))))))))
|