;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; U. C. Berkeley ;; ;; EECS Computer Science Division ;; ;; CS3 Lecture 10 Answers ;; ;; (Advanced Recursion) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;; ;; PASCAL ;;;;;;;;; (define (pascal C R) (if (= R 0) (if (= C 0) 1 0) (+ (pascal (- C 1) (- R 1)) (pascal C (- R 1))))) ;; Testing (pascal 0 0) ;; ==> 1 (pascal 2 5) ;; ==> 10 ;;;;;;; ;; SORT ;;;;;;; ;; INSERT (define (insert w sorted) (cond ((null? sorted) (se w)) ((before? w (first sorted)) (se w sorted)) (else (se (first sorted) (insert w (bf sorted)))))) ;; Testing (insert 'c '()) ;; ==> (c) (insert 'a '(b c d e)) ;; ==> (a b c d e) (insert 'c '(a b d e)) ;; ==> (a b c d e) (insert 'e '(a b c d)) ;; ==> (a b c d e) ;; SORT (define (sort s) (sort-helper s '())) ;; SORT-HELPER (define (sort-helper unsorted sorted) (if (empty? unsorted) sorted (sort-helper (bf unsorted) (insert (first unsorted) sorted)))) ;; Testing (sort '(c a d e b)) ;; ==> (a b c d e) ;;;;;;;;;;; ;; PAIR-ALL ;;;;;;;;;;; ;; APPEND-PREFIX (define (append-prefix prefix suffixes) (if (empty? suffixes) '() (se (word prefix (first suffixes)) (append-prefix prefix (bf suffixes))))) ;; Testing (append-prefix 'un '(der usual cle)) ;; ==> (under unusual uncle) ;; PAIR-ALL (define (pair-all prefixes suffixes) (if (empty? prefixes) '() (se (append-prefix (first prefixes) suffixes) (pair-all (bf prefixes) suffixes)))) ;; Testing (pair-all '(spr s k) '(ite at ing ong)) ;; ==> (sprite sprat spring sprong site sat sing song kite kat king kong) (pair-all '(curry- sauteed- fried- raw-) '(beef chicken pork tofu)) ;; ==> (curry-beef curry-chicken curry-pork curry-tofu ;; ==> sauteed-beef sauteed-chicken sauteed-pork sauteed-tofu ;; ==> fried-beef fried-chicken fried-pork fried-tofu ;; ==> raw-beef raw-chicken raw-pork raw-tofu)