ITPub博客

首页 > Linux操作系统 > Linux操作系统 > lisp 习题 矩阵旋转

lisp 习题 矩阵旋转

原创 Linux操作系统 作者:babyyellow 时间:2012-08-08 15:43:46 0 删除 编辑
给定一个方形矩阵 (m = n)   做顺时针90度转换:

CL-USER> (turn #2a((a b)(c d)))
#2A((C A) (D B))


1 2 3            7 4 1             
4 5 6   =>    5 8 2      
7 8 9            9 6 3  


CL-USER> (defun turn (arr)
       (let ( (m (array-dimensions arr)))
         (let ( (arr1 (make-array m )))
           (dotimes ( i (car m) i)
         (dotimes (j (car m) j)
           (setf (aref arr1 i j) (aref arr (- (car m) 1 j) i))))
           arr1)))
STYLE-WARNING: redefining COMMON-LISP-USER::TURN in DEFUN
TURN

CL-USER>  (setf arr #2A((1 2 3 4) (5 6 7 8) (9 10 11 12) (13 14 15 16)))
#2A((1 2 3 4) (5 6 7 8) (9 10 11 12) (13 14 15 16))
CL-USER>
CL-USER> (turn arr)
#2A((13 9 5 1) (14 10 6 2) (15 11 7 3) (16 12 8 4))
CL-USER>



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/133735/viewspace-740384/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。 潜意识沟通实证者 心理咨询师。 禅修布道者, 禅修指导员。 禅定实证者。

注册时间:2010-12-02

  • 博文量
    367
  • 访问量
    1908853