The following are sample answers to the problems you were asked to solve. As with all functions, there is always more than one right answer.

  1. (define average-list (lambda (alist) (average-list-help alist 0 0))) (define average-list-help (lambda (alist total count) (cond ((and (null? alist) (= count 0)) 0) ((null? alist) (/ total count)) ((number? (car alist)) (average-list-help (cdr alist) (+ total (car alist)) (+ count 1))) (else (average-list-help (cdr alist) total count)))))
  2. (define make-list (lambda (n) (cond ((<= n 0) '()) (else (cons '() (make-list (- n 1)))))))
  3. (define crossproduct (lambda (vector1 vector2) (if (null? vector1) () (cons (* (car vector1) (car vector2)) (crossproduct (cdr vector1) (cdr vector2))))))
  4. (define crossproduct-tr (lambda (vector1 vector2) (crossproduct-hlp-tr vector1 vector2 () ))) (define crossproduct-hlp-tr (lambda (vector1 vector2 result) (if (null? vector1) result (crossproduct-hlp-tr (cdr vector1) (cdr vector2) (append result (list (* (car vector1) (car vector2))))))))
  5. (define delete-every-nth (lambda (n lst) (if (= n 0) lst (delete-hlp n lst 1)))) (define delete-hlp (lambda (n lst count) (COND ((null? lst) ()) ((= count n) (delete-hlp n (cdr lst) 1)) (else (cons (car lst) (delete-hlp n (cdr lst) (+ 1 count)))))))
  6. (define delete-every-nth-tr (lambda (n lst) (if (= n 0) lst (delete-hlp-tr n lst 1 () )))) (define delete-hlp-tr (lambda (n lst count result) (COND ((null? lst) result) ((= count n) (delete-hlp-tr n (cdr lst) 1 result)) (else (delete-hlp-tr n (cdr lst) (+ 1 count) (append result (list (car lst))))))))
  7. (define even-list (lambda (lst) (even-list-hlp lst 1))) (define even-list-hlp (lambda (lst count) (COND ((null? lst) ()) ((even? count) (cons (car lst) (even-list-hlp (cdr lst) (+ count 1)))) (else (even-list-hlp (cdr lst) (+ count 1))))))
  8. (define even-list-tr (lambda (lst) (even-list-hlp-tr lst 1 () ))) (define even-list-hlp-tr (lambda (lst count result) (COND ((null? lst) result) ((even? count) (even-list-hlp-tr (cdr lst) (+ count 1) (my-append result (list (car lst))))) (else (even-list-hlp-tr (cdr lst) (+ count 1) result)))))
    1. 50
    2. 107
    3. N DIV 2
    4. O(N)
  9. append causes a summation
    1. (5*6)/2 = 15
    2. (6*7)/2 = 21
    3. Let P = N DIV 2 (P^2 + P)/2
    4. O(N^2)
  10. (define odd-list (lambda (lst) (odd-list-hlp lst 1))) (define odd-list-hlp (lambda (lst count) (COND ((null? lst) ()) ((odd? count) (cons (car lst) (odd-list-hlp (cdr lst) (+ count 1)))) (else (odd-list-hlp (cdr lst) (+ count 1))))))
  11. (define odd-list-tr (lambda (lst) (odd-list-hlp-tr lst 1 () ))) (define odd-list-hlp-tr (lambda (lst count result) (COND ((null? lst) result) ((odd? count) (odd-list-hlp-tr (cdr lst) (+ count 1) (my-append result (list (car lst))))) (else (odd-list-hlp-tr (cdr lst) (+ count 1) result)))))
    1. 50
    2. 108
    3. 1 + (N DIV 2)
    4. O(N)
  12. The append causes a summation
    1. (5*6)/2 = 15
    2. (7*8)/2 = 28
    3. (P^2 + P)/2 where P= 1 + (N DIV 2) if n is odd
      or
      (N DIV 2) if n is even
    4. O(N^2)
  13. (define n-list (lambda (n lst) (n-list-hlp n lst 1))) (define n-list-hlp (lambda (n lst count) (COND ((null? lst) ()) ((mult-of-n n count) (cons (car lst) (n-list-hlp n (cdr lst) (+ count 1)))) (else (n-list-hlp n (cdr lst) (+ count 1)))))) (define mult-of-n (lambda (n num) (= (modulo num n) 0)))
  14. (define n-list-tr (lambda (n lst) (n-list-hlp-tr n lst 1 () ))) (define n-list-hlp-tr (lambda (n lst count result) (COND ((null? lst) result) ((mult-of-n n count) (n-list-hlp-tr n (cdr lst) (+ count 1) (append result (list (car lst))))) (else (n-list-hlp-tr n (cdr lst) (+ count 1) result)))))
    1. 20
    2. 12
    3. M DIV P
    4. O(M DIV P)
  15. append causes a summation
    1. (3*4)/2 = 6
    2. (5*6)/2 = 15
    3. Let Q = M DIV P (Q^2 + Q)/2
    4. Let Q = M DIV P O(Q^2)
  16. (define insert-left-all (lambda (insert find lst) (COND ((null? lst) ()) ((equal? find (car lst)) (cons insert (cons (car lst) (insert-left-all insert find (cdr lst))))) ((list? (car lst)) (cons (insert-left-all insert find (car lst)) (insert-left-all insert find (cdr lst)))) (else (cons (car lst) (insert-left-all insert find (cdr lst)))))))
  17. (define insert-right-all (lambda (insert find lst) (COND ((null? lst) ()) ((equal? find (car lst)) (cons (car lst) (cons insert (insert-right-all insert find (cdr lst))))) ((list? (car lst)) (cons (insert-right-all insert find (car lst)) (insert-right-all insert find (cdr lst)))) (else (cons (car lst) (insert-right-all insert find (cdr lst)))))))
  18. (define butlast (lambda (lst) (COND ((null? lst) ()) ((null? (cdr lst)) ()) ((list? (car lst)) (cons (butlast (car lst)) (butlast (cdr lst)))) (else (cons (car lst) (butlast (cdr lst)))))))