[ create a new paste ] login | about

Project: programmingpraxis
Link: http://programmingpraxis.codepad.org/6JoM2tNp    [ raw code | output | fork ]

programmingpraxis - Scheme, pasted on Apr 23:
1
2
3
4
5
6
7
8
9
10
11
12
13
; even-odd partition

(define (even-odd vec)
  (define (swap! a b)
    (let ((t (vector-ref vec a)))
      (vector-set! vec a (vector-ref vec b))
      (vector-set! vec b t)))
  (let loop ((lo 0) (hi (- (vector-length vec) 1)))
    (cond ((= lo hi) vec)
          ((even? (vector-ref vec lo)) (loop (+ lo 1) hi))
          (else (swap! lo hi) (loop lo (- hi 1))))))

(display (even-odd '#(1 2 3 4 5 6 7 8 9)))


Output:
1
#(8 2 6 4 5 7 3 9 1)


Create a new paste based on this one


Comments: