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 + -
显示快捷键?