Anonymous user
Range extraction: Difference between revisions
Emacs Lisp: Rewrite unreadable alternative solution
(Emacs Lisp: Improve formatting) |
(Emacs Lisp: Rewrite unreadable alternative solution) |
||
Line 1,728:
Vanilla:
<lang Lisp>(
(let* ((last-number (pop numbers))
(range (list last-number))
ranges)
(dolist (n numbers)
(push n range)
(push (nreverse range) ranges)
(setq range (list n)))
(setq last-number n))
(nreverse (cons (nreverse range) ranges))))
(defun
(cond
▲ (if ls (if (= (+ a 1) (car ls))
(error "invalid range"))
(format "%d,%s" a (ab (car ls) (cdr ls))))▼
((= (
(number-to-string (car range)))
((= (length range) 2)
(t
(defun
(mapconcat #'format-range (split-into-ranges numbers) ","))
▲ (format "%d-%d,%s" a c (ab (car ls) (cdr ls))))
(rangext '(0 1 2 4 6 7 8 11 12 14
|