Run-length encoding: Difference between revisions
Content added Content deleted
Line 2,561: | Line 2,561: | ||
<lang Racket> |
<lang Racket> |
||
#lang racket |
#lang racket |
||
(define (encode str) |
(define (encode str) |
||
(regexp-replace* #px"(.)\\1*" str |
(regexp-replace* #px"(.)\\1*" str (λ (m c) (~a (string-length m) c)))) |
||
(λ (m c) (~a (string-length m) c)))) |
|||
(define (decode str) |
(define (decode str) |
||
(regexp-replace* #px"([0-9]+)(.)" str |
(regexp-replace* #px"([0-9]+)(.)" str (λ (m n c) (make-string (string->number n) (string-ref c 0))))) |
||
(λ (m n c) (make-string (string->number n) |
|||
(string-ref c 0))))) |
|||
</lang> |
</lang> |
||