[ create a new paste ] login | about

Link: http://codepad.org/bvsiQ3LM    [ raw code | output | fork ]

programmingpraxis - Scheme, pasted on Aug 20:
; 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)


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    *
   * *
  * * *
 * * * *
* * * * *
 * * * *
  * * *
   * *
    *

    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *


Create a new paste based on this one


Comments: