
Here is my code:
Code: Select all
(defun simplify (expanded-list simplified-list)
(setq compared-value (car expanded-list))
(loop for term in (cdr expanded-list) do
(cond
((null term)
(progn (print "null") (return compared-value)))
((and (atom compared-value) (atom term))
(progn
(print "both numbers..")
(print compared-value)
(print term)
(print (+ compared-value term))
(print simplified-list)
(print (cddr expanded-list))
(return (list "newlist"
(list (+ compared-value term) simplified-list (cddr expanded-list))))
(print newlist)))
((and (listp compared-value) (listp term))
(if (equalp (cdr compared-value) (cdr term))
(list "newlist" (list
(cons
(+ (car compared-value) (car term))
(cdr term))
simplified-list
(cddr expanded-list)))))
(t (list "newlist"
(list (cons compared-value simplified-list (cddr expanded-list)))))))
(print "newlist:")
(print newlist)
(if (null (cddr expanded-list))
newlist
(simplify (cdr expanded-list) newlist)))