Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

post you are run length encoding in lisp

Name: Anonymous 2014-10-05 3:18

critique mine pl0x:

(defun rle (str) ;run length encoding
(let ((i 0) c count out)
(while (< i (length str))
(if (eq c (elt str i))
(setq count (1+ count))
(when c
(setq out (append out (list (cons c count)))))
(setq c (elt str i))
(setq count 1))
(setq i (1+ i)))
(when c (setq out (append out (list (cons c count)))))
out))

Name: >>12 2014-10-05 18:55

>>23

How should I format my lisp?

(defun rle (l)
(cond ((eq l nil) nil)
(t (let ((e (rle (cdr l))))
(cond
((eq e nil)
(cons (cons 1 (car l)) e))
((eq (car l) (cdar e))
(cons
(cons (+ 1 (caar e)) (cdar e))
(cdr e)))
(t
(cons (cons 1 (car l)) e)))))))

(defun rld (l)
(cond
((eq l nil) nil)
(t (cond
((> (caar l) 1)
(cons
(cdar l)
(rld (cons
(cons (- (caar l) 1)(cdar l))
(cdr l)))))
(t
(cons (cdar l) (rld (cdr l))))))))


Output:
(let ((l '(a a a b c c)))
(print (rle l))
(print (rld (rle l)))
nil
)

((3 . a) (1 . b) (2 . c))
(a a a b c c)
nil

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List