Somando dígitos de um número com Lisp
Vez ou outra aparece um problema no Project Euler que pede para somar os dígitos de um número grande. Esta é uma maneira rápida de resolver o problema, em apenas 5 linhas de código. Primeiro transformamos o número e uma lista com os digitos, e depois usamos a função reduce para somar esses números:
(defun num->list (num &optional (lst nil))
(if (zerop num)
lst
(num->list (floor num 10) (push (mod num 10) lst))))
(print (reduce #'+ (num->list (expt 2 1000))))
page_revision: 0, last_edited: 1238283335|%e %b %Y, %H:%M %Z (%O ago)





