自然数の分割
Posted feedbacks - Common Lisp
再帰とか普通のやり方は既出なので、コード生成と eval で。
1 2 3 4 5 6 7 8 9 | (defun partition (n m)
(eval (gen-partition n m 0 (loop repeat m collect (gensym)))))
(defun gen-partition (n m i vars)
(if (= i m)
`(if (= (+ ,@vars) ,n)
(format t "~@{~D~^, ~}~%" ,@vars))
`(loop for ,(nth i vars) from ,n downto 0
do ,(gen-partition n m (1+ i) vars))))
|


herumi
#4099()
Rating1/1=1.00
[ reply ]