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))
    )
)
Be first to comment
Leave a reply