Я бы хотел попросить вас помочь решить мою задачу с выводом результата кода ниже.Ввод: (run-length-encode '(1 1 2 2 3 3 4 4 a a b b))
и он возвращает ((2 . 1) (2 . 2) (2 . 3) (2 . 4))
, но я хотел бы иметь вывод, как (2 1 2 2 2 3 2 4 2 a 1 b)
.Что я делаю не так?
(define (run-length-encode lst)
(define (rle val-lst cur-val cur-cnt acc)
(if (pair? val-lst)
(let ((new-val (car val-lst)))
(if (eq? new-val cur-val)
(rle (cdr val-lst) cur-val (+ cur-cnt 1) acc)
(rle (cdr val-lst) new-val 1 (cons (cons cur-cnt cur-val) acc))))
(cons (cons cur-cnt cur-val) acc)))
(if (pair? lst)
(reverse (rle (cdr lst) (car lst) 1 '()))
'()))
Спасибо за помощь, Ян