;#!/usr/bin/racket
;#lang scheme

; List reversing
(define (reverse ls)
        (define (iter xs result)
                (if (null? xs)
                        result
                        (iter (cdr xs) (cons (car xs) result))))
        (iter ls '()))

(define (same-parity a . xs)
        (let ((parity (if (odd? a) odd? even?)))
                (define (iter items result)
                        (if (null? items)
                                (reverse result)
                                (iter (cdr items)
                                        (if (parity (car items))
                                                (cons (car items) result)
                                                result))))
                (iter xs (list a))))


; Testing
(display (same-parity 1 2 3 4 5 6 7 8 9 10))
(newline)
