RosettaCodeData/Task/Run-length-encoding/Racket/run-length-encoding.rkt

6 lines
234 B
Racket

#lang racket
(define (encode str)
(regexp-replace* #px"(.)\\1*" str (λ (m c) (~a (string-length m) c))))
(define (decode str)
(regexp-replace* #px"([0-9]+)(.)" str (λ (m n c) (make-string (string->number n) (string-ref c 0)))))