能推荐下比较经典的common lisp 代码么
2个回答
展开全部
;示例:(zhuanpan-lst-4 '((1 2 3)(a b c)(4 5)))
(defun zhuanpan-lst-4 (lst)
(let* ((bx (nreverse (mapcar #'length lst)))
(bx-len (length bx))
(bc (make-list bx-len :initial-element 0))
(bn (make-list bx-len :initial-element nil))
(lst1 (nreverse (copy-tree lst)))
(num 0)
(fn1 #'(lambda (num)
(dotimes (c bx-len bc)
(multiple-value-bind (b1 b2) (floor num (nth c bx))
(if (zerop b1)
(progn (setf (nth c bc) b2) (fill bc 0 :start (1+ c))(return bc))
(progn (setf (nth c bc) b2) (setf num b1)))))))
(fn2 #'(lambda ()
(dotimes (c bx-len bn)
(setf (nth (- bx-len 1 c) bn) (nth (nth c bc) (nth c lst1))))))
(fn3 #'(lambda (num) (funcall fn1 num) (funcall fn2))))
`(,bn ,#'(lambda (&key (zd 0) (n 0))
(cond
((= zd 0) (let ((val (funcall fn3 num)))(incf num) val))
((= zd 1) (let ((val (funcall fn3 num)))(decf num) val))
((= zd 2) (setf num n)(funcall fn3 num)))))))
(defun zhuanpan-lst-4 (lst)
(let* ((bx (nreverse (mapcar #'length lst)))
(bx-len (length bx))
(bc (make-list bx-len :initial-element 0))
(bn (make-list bx-len :initial-element nil))
(lst1 (nreverse (copy-tree lst)))
(num 0)
(fn1 #'(lambda (num)
(dotimes (c bx-len bc)
(multiple-value-bind (b1 b2) (floor num (nth c bx))
(if (zerop b1)
(progn (setf (nth c bc) b2) (fill bc 0 :start (1+ c))(return bc))
(progn (setf (nth c bc) b2) (setf num b1)))))))
(fn2 #'(lambda ()
(dotimes (c bx-len bn)
(setf (nth (- bx-len 1 c) bn) (nth (nth c bc) (nth c lst1))))))
(fn3 #'(lambda (num) (funcall fn1 num) (funcall fn2))))
`(,bn ,#'(lambda (&key (zd 0) (n 0))
(cond
((= zd 0) (let ((val (funcall fn3 num)))(incf num) val))
((= zd 1) (let ((val (funcall fn3 num)))(decf num) val))
((= zd 2) (setf num n)(funcall fn3 num)))))))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询