#lang racket ;;;;;;;;;;;;;;;;;;;;;;;;2.17 (define (last-pair L) (if (null? (cdr L)) L (last-pair (cdr L)))) ;;;;;;;;;;;;;;;;;;;;;;;2.18 (define (reverse L) (if (null? (cdr L)) L (cons (reverse (cdr L)) (car L)))) ;;;;;;;;;;;;;;;;;;;;;;2.19 (define us-coins (list 50 25 10 5 1)) (define us-coins2 (list 1 5 10 25 50)) (define uk-coins (list 100 50 20 10 5 2 1)) (define (cc amount coin-values) (cond ((= amount 0) 1) ((or (< amount 0) (no-more? coin-values)) 0) (else (+ (cc amount (except-first-denomination coin-values)) (cc (- amount (first-denomination coin-values)) coin-values))))) (define (no-more? coins) (null? coins)) (define (except-first-denomination coin-values) (cdr coin-values)) (define (first-denomination coins) (car coins)) ;;;;;;;;;;;;;;;;;;;;2.20 (define (same-parity sample . others) (filter (if (even? sample) even? odd?) (cons sample others))) ;;;;;;;;;;;;;;;;;;;;;;;test ;(last-pair (list 23 37 149 34)) ;(reverse (list 1 4 9 16 25)) ;(cc 100 us-coins) ;(cc 100 us-coins2) ;(same-parity 2 3 4 5 6 7)