;; Scheme code from lecture 3 (define (make-list low hi) (if (> low hi) '() (cons low (make-list (+ low 1) hi)))) (define big-list (make-list 0 100000)) (define (rev L) (tail-rev L '())) (define (tail-rev L A) (cond [ (null? L) A ] [ else (tail-rev (rest L) (cons (first L) A)) ] )) (define (my-reverse L) (if (null? L) '() (append (my-reverse (rest L)) (list (first L))))) (define (my-tail-reverse L) (my-t-rev-help L '())) (define (my-t-rev-help L ans) (if (null? L) ans (my-t-rev-help (rest L) (cons (first L) ans)))) (define (smush L) (foldr append '() L)) (define (addk k L) (map (lambda (elem) (+ k elem)) L)) (define Amy '(Amy 2 3 41 42 50)) (define Bea '(Bea 3 40 50 51 52)) (define TL1 (list Amy Bea)) (define W1 '(1 3 41 51 52)) (define (matches L1 L2) (foldr + 0 (map (lambda (n) (markit n L2)) L1))) (define (markit elem L) (if (member elem L) 1 0)) (define (lotto TL W) (foldr (lambda (s1 s2) (if (> (second s1) (second s2)) s1 s2)) '("chrsitine" 0) (score-em TL W))) (define (score-em TL W) (map (lambda (L) (score L W)) TL)) (define (score L W) (list (first L) (matches (rest L) W))) (define (drop-more k L) (filter (lambda (x) (<= x k)) L)) (define (generate-menu entrees desserts unavail) (let ((e (filter (lambda (f) (not (member f unavail))) entrees)) (d (filter (lambda (f) (not (member f unavail))) desserts))) (all-pairs e d))) (define (one-pair elem L) (map (lambda (e) (list elem e)) L)) (define (all-pairs en de) (foldr append '() (map (lambda (e) (one-pair e de)) en))) (define entrees (list "steak" "pasta" "chicken" "turkey")) (define desserts (list "chocolate mousse" "lemon pie" "cake")) (define unavailable (list "pasta" "lemon pie"))