可能重复:
将数字强制转换为普通 lisp 中的列表
我是普通 lisp 的初学者。
如果我有数字 123456890 并且我想分别获得数字 1 2 3 5 9 我该如何在 common lisp 中做到这一点?
可能重复:
将数字强制转换为普通 lisp 中的列表
我是普通 lisp 的初学者。
如果我有数字 123456890 并且我想分别获得数字 1 2 3 5 9 我该如何在 common lisp 中做到这一点?
首先,很明显,这个问题之前已经解决过很多次了,在你问之前,你必须寻找解决方案,否则你就很难让别人找到一个好的解决方案。所以,这是一个较旧的答案:强制数字到普通 lisp 中的列表
(defun int-to-list (int)
(assert (>= int 0) nil "Argument must be non-negative")
(if (= int 0) (list 0)
(loop with result = nil
while (> int 0) do
(multiple-value-bind (divisor remainder)
(floor int 10)
(push remainder result)
(setf int divisor))
finally (return result))))