Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;;Lecture 10
- ;;3
- (defun print-fact (x)
- (terpri)
- (princ "print-fact applied at ")
- (princ x)
- (let ((prev (if (= x 0) 1 (* x (print-fact (- x 1))))))
- (terpri)
- (princ "print-fact returns ")
- (princ prev)
- ))
- ;;4
- (defun prints-fact (x)
- (labels ((fact (x depth)
- (terpri)
- (indent depth)
- (princ "prints-fact applied at ")
- (princ x)
- (let ((prev (if (= x 0)
- 1
- (* x (fact (- x 1) (1+ depth))))))
- (terpri)
- (indent depth)
- (princ "prints-fact returns ")
- (princ prev))
- )
- (indent (x)
- (if (<= x 0)
- 0
- (progn (princ " ") (indent (- x 1))))
- ))
- (fact x 0)
- ))
- ;;5
- (defun tri-fract (length)
- (labels ((step (length) (progn
- (ngon length 4)
- (turtle:move (/ length 2))
- (turtle:turn pi/4)
- (if (> length 1) (step (sqrt (* 2 (expt (/ length 2) 2)))) 0)
- )))
- (step length)))
- (defun ngon (length n)
- (labels ((draw (prev) (progn
- (turtle:draw length)
- (turtle:turn (* (/ 360 n) (/ pi 180)))
- (if (< prev (- n 1)) (draw (1+ prev)) 0)
- )))
- (draw 0)
- ))
- (defun clear () (turtle:clear))
- (defun sqr-fract (length)
- (labels ((step (length) (progn
- (ngon length 4)
- (turtle:move (* length 0.1))
- (turtle:turn (/ pi 32))
- (if (> length 1) (step (* length 0.88)) 0)
- )))
- (step length)))
- (defun leaf (length)
- (if (> length 1) (progn
- (turtle:draw length)
- (turtle:excursion
- (turtle:turn (/ pi 6))
- (leaf (* length 0.4))
- )
- (turtle:excursion
- (turtle:turn (* -1 (/ pi 6)))
- (leaf (* length 0.4))
- )
- (turtle:turn (/ pi 24))
- (leaf (* length 0.7))
- 0
- )
- 0
- ))
- ;;6
- (defun draw-bt (tree length)
- (if (not (null tree)) (progn
- (if (not (null (cdr tree))) (turtle:excursion (turtle:turn (/ pi 3)) (turtle:draw length) (turtle:turn (* -1 (/ pi 3))) (draw-bt (cadr tree) (/ length 2))))
- (if (not (null (cddr tree))) (turtle:excursion (turtle:turn (* -1 (/ pi 3))) (turtle:draw length) (turtle:turn (/ pi 3)) (draw-bt (caddr tree) (/ length 2))))
- 0)
- 0))
Advertisement
Add Comment
Please, Sign In to add comment