2013-01-19 20 views
-1

可能重复:
Coercing numbers to lists in common lisp如何从一个整数一个单一的数字Common Lisp中

我在Common Lisp的初学者。

如果我有号码123456890,我想单独获取号码1 2 3 5 9如何在普通的lisp中执行此操作?

+2

你会怎么做_any_语言? –

+0

我没有真正尝试过任何常见的lisp。我记得很久以前,我曾尝试在C语言中使用for循环和“%10”,但无论我如何更改它,它都不起作用,并且当其中一个数字为0时出现问题。 – imu96

回答

0

首先,很明显,这个问题在多次解决之前就已经解决了,而且在您提出问题之前,您必须先搜索解决方案,否则会让其他人难以找到一个好的解决方案。所以,这里有一个较老的答案:Coercing numbers to lists in common 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)))) 
相关问题