August 19, 2024
P12 - Decode a run-length encoded list
Given a run-length code list generated as specified in problem P11. Construct its uncompressed version.
lisp
(defun decode-modified (code)
(if (null code)
()
(append (decode-one (car code))
(decode-modified (cdr code)))
)
)
(defun decode-one (one-code)
(if (listp one-code)
(repeat (car one-code) (second one-code))
(list one-code)
)
)
(defun repeat (n expr)
(if (zerop n)
()
(cons expr (repeat (1- n) expr))
)
)