Re: [請益] 沒有想像中簡單的小問題
ANSI Common-Lisp 版本:
(setf x '(3 4 5 6 7))
(defun repeat-cdr (x i)
(cond ((= i 0) x)
(t (repeat-cdr (cdr x) (- i 1)))
)
)
(defun item (x i)
(cond ((= i 1) (cons (car x) nil))
(t (append (item x (- i 1)) (cons (car (repeat-cdr x (- i 1))) nil)))
)
)
(defun ascend (n)
(cond ((= n 1) (cons n nil))
(t (append (ascend (- n 1)) (cons n nil)))
)
)
(defun palindrome (n)
(cond ((= n 1) (cons n nil))
(t (append (ascend (- n 1)) (cons n nil) (reverse (ascend (- n 1)))))
)
)
(defun odd-size (x)
(cond ((null (car x)) nil)
((= 0 (mod (length (car x)) 2)) (odd-size (cdr x)))
(t (cons (car x) (odd-size (cdr x))))
)
)
(defun diamond (x)
(odd-size (mapcar #'(lambda (y) (item x y)) (palindrome (length x))))
)
(defun print* (x)
(cond ((atom x) (princ x))
((listp x) (mapcar #'(lambda (y) (print* y)) x) (terpri))
)
)
(defun repeat-print (x i)
(cond ((< i 1) nil)
((= i 1) (princ x))
(t (repeat-print x (- i 1)) (princ x))
)
)
(mapcar #'(lambda (y) (repeat-print #\space (/ (- (length x) (length y)) 2))
(print* y)) (diamond x))
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.224.95
推
03/24 02:30, , 1F
03/24 02:30, 1F
→
03/24 02:30, , 2F
03/24 02:30, 2F
推
03/24 09:03, , 3F
03/24 09:03, 3F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 14 之 34 篇):