RosettaCodeData/Task/Range-expansion/Racket/range-expansion-1.rkt
2023-07-01 13:44:08 -04:00

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")