codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; search in an ascending matrix (define (matrix-rows x) (vector-length x)) (define (matrix-cols x) (vector-length (vector-ref x 0))) (define (matrix-ref m i j) (vector-ref (vector-ref m i) j)) (define m (vector #(1 5 7 9) #(4 6 10 15) #(8 11 12 19) #(14 16 18 21))) (define (search m k) (let ((max-r (- (matrix-rows m) 1)) (max-c (- (matrix-cols m) 1))) (let loop ((r 0) (c max-c)) (cond ((or (negative? c) (< max-r r)) #f) ((< k (matrix-ref m r c)) (loop r (- c 1))) ((< (matrix-ref m r c) k) (loop (+ r 1) c)) (else (values r c)))))) (call-with-values (lambda () (search m 11)) (lambda (r c) (display r) (newline) (display c) (newline))) (display (search m 13)) (newline)
Private
[
?
]
Run code
Submit