-
-
Save kyanny/85f65f40299dc0d805e962c2a36ccad2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(setq edebug-trace t) | |
(defun pack (lista) | |
(if (eql lista nil) | |
nil | |
(cons (pega lista) (pack (tira lista))) | |
) | |
) | |
(defun pega (lista) | |
(cond ((eql lista nil) nil) | |
((eql (cdr lista) nil) lista) | |
((equal (car lista) (cadr lista)) | |
(cons (car lista) (pega (cdr lista)))) | |
(t (list (car lista))) | |
) | |
) | |
(defun tira (lista) | |
(cond ((eql lista nil) nil) | |
((eql (cdr lista) nil) nil) | |
((equal (car lista) (cadr lista)) | |
(tira (cdr lista))) | |
(t (cdr lista)) | |
) | |
) | |
(pack '(a a a a b c c a a d e e e e)) | |
;;=> ((a a a a) (b) (c c) (a a) (d) (e e e e)) | |
;; pega | |
(pega '(a a a a b c c a a d e e e e)) | |
(cons 'a | |
(pega '(a a a b c c a a d e e e e))) | |
(cons 'a | |
(cons 'a | |
(pega '(a a b c c a a d e e e e)))) | |
(cons 'a | |
(cons 'a | |
(cons 'a | |
(pega '(a b c c a a d e e e e))))) | |
(cons 'a | |
(cons 'a | |
(cons 'a | |
(list 'a)))) | |
(cons 'a | |
(cons 'a | |
(cons 'a | |
'(a)))) | |
;; tira | |
(tira '(a a a a b c c a a d e e e e)) | |
(tira '(a a a b c c a a d e e e e)) | |
(tira '(a a b c c a a d e e e e)) | |
(tira '(a b c c a a d e e e e)) | |
(cdr '(a b c c a a d e e e e)) | |
'(b c c a a d e e e e) | |
;;pack | |
(pack '(a a a a b c c a a d e e e e)) | |
(cons (pega '(a a a a b c c a a d e e e e)) | |
(pack (tira '(a a a a b c c a a d e e e e)))) | |
(cons '(a a a a) | |
(pack '(b c c a a d e e e e))) | |
(cons '(a a a a) | |
(cons (pega '(b c c a a d e e e e)) | |
(pack (tira '(b c c a a d e e e e))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(pack '(c c a a d e e e e)))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons (pega '(c c a a d e e e e)) | |
(pack (tira '(c c a a d e e e e)))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons '(c c) | |
(pack '(a a d e e e e))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons '(c c) | |
(cons (pega '(a a d e e e e)) | |
(pack (tira '(a a d e e e e))))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons '(c c) | |
(cons '(a a) | |
(pack '(d e e e e)))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons '(c c) | |
(cons '(a a) | |
(cons (pega '(d e e e e)) | |
(pack (tira '(d e e e e)))))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons '(c c) | |
(cons '(a a) | |
(cons '(d) | |
(pack '(e e e e))))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons '(c c) | |
(cons '(a a) | |
(cons '(d) | |
(cons (pega '(e e e e)) | |
(pack (tira '(e e e e))))))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons '(c c) | |
(cons '(a a) | |
(cons '(d) | |
(cons '(e e e e) | |
(pack nil))))))) | |
(cons '(a a a a) | |
(cons '(b) | |
(cons '(c c) | |
(cons '(a a) | |
(cons '(d) | |
(cons '(e e e e) | |
nil)))))) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment