; drawing diamonds
(define (star) (display #\*))
(define (blanks n)
(do ((n n (- n 1))) ((zero? n)) (display #\space)))
(define (filled n)
(do ((n n (- n 1))) ((= n 1) (star)) (star) (blanks 1)))
(define (unfilled n)
(cond ((= n 1) (star))
(else (star) (blanks (+ n n -3)) (star))))
(define (diamond n filled?)
(do ((i 1 (+ i 1))) ((< n i))
(blanks (- n i))
(if filled? (filled i) (unfilled i))
(newline))
(do ((i (- n 1) (- i 1))) ((zero? i))
(blanks (- n i))
(if filled? (filled i) (unfilled i))
(newline)))
(diamond 5 #t)
(newline)
(diamond 5 #f)