codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; mb.ss ; ; mandelbrot set (define (1+ r) (+ r 1)) (define (abs-complex c) (let ((r (real-part c)) (i (imag-part c))) (sqrt (+ (* r r) (* i i))))) (define (mandelbrot c) (let iterate ((x 0) (acc c)) (if (and (< (abs-complex acc) 2) (< x 200)) (iterate (1+ x) (+ (* acc acc) c)) x))) (define chars '( (1 ".") (3 ":") (8 "/") (16 "$") (64 "%") (1000 "#") )) (define (itercount->string cnt) (let find ((chars chars)) (cond ((null? (cdr chars)) (cadar chars)) ((<= cnt (caar chars)) (cadar chars)) (else (find (cdr chars)))))) (define run (let ((rows 30) (cols 50)) (lambda (rmin rmax imin imax) (do ((ii 0 (1+ ii))) ((= ii rows) #f) (do ((rr 0 (1+ rr))) ((= rr cols) #f) (let* ((rx (+ (/ (* (- rmax rmin) rr) (- cols 1)) rmin)) (ix (+ (/ (* (- imax imin) ii) (- rows 1)) imin)) (x (+ rx (* ix 0+1i))) (y (mandelbrot x)) (str (itercount->string y))) (display str))) (newline)) (void)))) ;; example plot: (run -2.0 1.0 -1.5 1.5)
Private
[
?
]
Run code