g1.el
来自「ARM7的源代码」· EL 代码 · 共 98 行
EL
98 行
;(gen-list 32)
(defun gen-list (c)
"Generate 0-c list"
(let ((v '())
(e 0))
(dotimes (e c v)
(setq v (append v `(,e)))
)
)
)
;(gen-tree 32 8 )
(defun gen-tree (c w)
"Generate recursive lists with width w and elementcount c"
(let ((l (gen-list c)))
(while (> (length l) w)
(let ((v '())
(e 0)
(c 0))
(while (< e (length l))
(if (> (+ e w) (length l))
(setq c (- (length l) e))
(setq c w)
)
(setq v (append v `(,(cut-copy-list l e (+ e c)))))
(setq e (+ e w))
)
(setq l v)
)
)
`,l
)
)
; (is-base '(1 2 3 4))
; (is-base '((1 2) 3 4))
(defun is-base (l)
"Check weather this is no nested list"
(let ((v 't)
(e '()))
(dolist (e l v)
(if (listp e)
(setq v '())
)
)
)
)
;(get-depth '((1 2) (3 4) (5 6)))
;(get-depth '((1 2)))
;(get-depth (gen-tree 32 4))
(defun get-depth (l)
"Get list nesting level"
(if (is-base l)
'1
(let ((v 1)
(e '())
(c 1)
(d 0))
(dolist (e l v)
(setq d 1)
(if (listp e)
(setq d (+ 1 (get-depth e)))
)
(if (> d v)
(setq v d)
)
)
)
)
)
(defun get-range (l)
(format "%.3d_%.3d" (get-right l) (get-left l))
)
;(get-first '((1 2 3) 2 4))
(defun get-left (l)
"Get the leftmost element"
(if (listp l)
(get-left (nth 0 l))
`,l
)
)
;(get-last '((1 2 3) 2 4))
(defun get-right (l)
"Get the rightmost element"
(if (listp l)
(get-right (nth (- (length l) 1) l))
`,l
)
)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?