Skip to content

Instantly share code, notes, and snippets.

@kyanny
Created June 15, 2021 16:09
Show Gist options
  • Save kyanny/85f65f40299dc0d805e962c2a36ccad2 to your computer and use it in GitHub Desktop.
Save kyanny/85f65f40299dc0d805e962c2a36ccad2 to your computer and use it in GitHub Desktop.
(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