13 lines
379 B
Racket
13 lines
379 B
Racket
#lang racket
|
|
|
|
(define (range-expand s)
|
|
(append*
|
|
(for/list ([r (regexp-split "," s)])
|
|
(match (regexp-match* "(-?[0-9]+)-(-?[0-9]+)" r
|
|
#:match-select cdr)
|
|
[(list (list f t))
|
|
(range (string->number f) (+ (string->number t) 1))]
|
|
[(list)
|
|
(list (string->number r))]))))
|
|
|
|
(range-expand "-6,-3--1,3-5,7-11,14,15,17-20")
|