-1

可能重复:
将数字强制转换为普通 lisp 中的列表

我是普通 lisp 的初学者。

如果我有数字 123456890 并且我想分别获得数字 1 2 3 5 9 我该如何在 common lisp 中做到这一点?

4

1 回答 1

0

首先,很明显,这个问题之前已经解决过很多次了,在你问之前,你必须寻找解决方案,否则你就很难让别人找到一个好的解决方案。所以,这是一个较旧的答案:强制数字到普通 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))))
于 2013-01-20T06:28:41.643 回答