Just now, Harry Spier wrote: > Thanks Neil, > > Each vector is in the order of about a thousand cells and there are > about a thousand of these vectors that are processed at one time. > So as long as I can do that in 10 or 20 seconds thats fine. So as > long as its "relatively efficient" I think I'm OK. Whats just as > important to me, is "clarity of the code", so that when I go back > and look at this and other code six months from now I can still > figure out what I did.
(These are relatively small numbers...) In any case, here's a solution that is not meant to be used as-is, but it makes a good point to consider the nature of your problem... (If efficiency does become an issue, then it would be better to work with bytestrings instead of vectors anyway.) (define (list-of-ranges-of-ones v) (let* ([t (vector->list v)] [t (map (λ (x) (integer->char (+ 32 (* x 17)))) t)] [t (list->string t)] [t (regexp-match-positions* #rx"1+" t)] [t (map (λ (x) (list (car x) (sub1 (cdr x)))) t)]) t)) -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! ____________________ Racket Users list: http://lists.racket-lang.org/users