The function hilbert programmed in Scheme as a functional program. | Lecture 3 - slide 31 : 42 Program 1 |
(define (hilbert n turn) (cond ((= n 0) (empty-hilbert-curve)) ((> n 0) (cond ((eq? turn 'up) (concat-path (hilbert (- n 1) 'right) (up-line) (hilbert (- n 1) 'up) (right-line) (hilbert (- n 1) 'up) (down-line) (hilbert (- n 1) 'left) )) ((eq? turn 'left) (concat-path (hilbert (- n 1) 'down) (left-line) (hilbert (- n 1) 'left) (down-line) (hilbert (- n 1) 'left) (right-line) (hilbert (- n 1) 'up))) ((eq? turn 'right) (concat-path (hilbert (- n 1) 'up) (right-line) (hilbert (- n 1) 'right) (up-line) (hilbert (- n 1) 'right) (left-line) (hilbert (- n 1) 'down))) ((eq? turn 'down) (concat-path (hilbert (- n 1) 'left) (down-line) (hilbert (- n 1) 'down) (left-line) (hilbert (- n 1) 'down) (up-line) (hilbert (- n 1) 'right))) ))))