[racket] sicp exercise 2.20

From: Jos Koot (jos.koot at telefonica.net)
Date: Tue Jul 20 11:09:29 EDT 2010

Yet another one using -apply-:

(define (same-parity x . xs)
 (cond
   ((null? xs) (list x))
   ((equal? (even? x) (even? (car xs))) (cons x (apply same-parity xs)))
   (else (apply same-parity x (cdr xs)))))

Jos 

> -----Original Message-----
> From: users-bounces at racket-lang.org 
> [mailto:users-bounces at racket-lang.org] On Behalf Of Martin DeMello
> Sent: 20 July 2010 15:37
> To: PLT-Scheme Mailing List
> Subject: [racket] sicp exercise 2.20
> 
> By way of a puzzle, I've been trying to solve SICP exercise 2.20
> ----------------------------
> Using the (define (f x . args)) notation, write a procedure 
> "same-parity" that takes one or more integers and returns a 
> list of all the arguments that have the same even-odd parity 
> as the first argument. For example, (same-parity 1 2 3 4 5 6 7)
> (1 3 5 7)
> (same-parity 2 3 4 5 6 7)
> (2 4 6)
> ----------------------------
> using "straight recursion", that is, without using any `let` 
> or `define` constructs. Still not managed to find the trick 
> that will tack on the first argument as the head of the list. 
> Anyone have a hint?
> 
> martin
> _________________________________________________
>   For list-related administrative tasks:
>   http://lists.racket-lang.org/listinfo/users




Posted on the users mailing list.