Jump to content

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>(setqdefun maxsplit-lispinto-eval-depthranges 10000(numbers)
(let* ((last-number (pop numbers))
(range (list last-number))
ranges)
(dolist (n numbers)
(if ls (if (= n (1+ a 1) (car lslast-number))
(push n range)
(push (nreverse range) ranges)
(setq range (list n)))
(setq last-number n))
(nreverse (cons (nreverse range) ranges))))
 
(defun abformat-range (a lsrange)
(cond
(if ls (if (= (+ a 1) (car ls))
(abc a (car ls) (cdrnot ls)range)
(error "invalid range"))
(format "%d,%s" a (ab (car ls) (cdr ls))))
((= (formatlength "%d" a)range) 1)
(number-to-string (car range)))
((= (length range) 2)
(format "%d,%sd" a (ab (car lsrange) (cdrcadr ls)range)))
(t
(format "%d-%d,%s" a c (ab (car lsrange) (cdrcar ls(last range))))))
 
(defun abcrangext (a b lsnumbers)
(mapconcat #'format-range (split-into-ranges numbers) ","))
(if ls (if (= (+ b 1) (car ls))
(abcd a (car ls) (cdr ls))
(format "%d,%d,%s" a b (ab (car ls) (cdr ls))))
(format "%d,%d" a b)))
 
(defun abcd (a c ls)
(if ls (if (= (+ c 1) (car ls))
(abcd a (car ls) (cdr ls))
(format "%d-%d,%s" a c (ab (car ls) (cdr ls))))
(format "%d-%d" a c)))
 
(defun rangext (ls)
(if ls (ab (car ls) (cdr ls)) ""))
 
(rangext '(0 1 2 4 6 7 8 11 12 14
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.