# [racket] sicp exercise 2.20

Ah, nice :) Thanks!
martin
On Tue, Jul 20, 2010 at 8:39 PM, Jos Koot <jos.koot at telefonica.net> wrote:
>* 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
*>*
*>*
*>*
*