выполнить длину кодировать символы в списке - PullRequest
0 голосов
/ 23 декабря 2018

Я бы хотел попросить вас помочь решить мою задачу с выводом результата кода ниже.Ввод: (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 '()))
           '()))

Спасибо за помощь, Ян

...