| 123456789101112131415161718192021222324252627282930313233 |
- #lang racket
- (define/contract (smallest-range-i nums k)
- (-> (listof exact-integer?) exact-integer? exact-integer?)
- (if (<= (length nums) 1) 0
- (let ([mi (apply min nums)]
- [ma (apply max nums)])
- (for*/fold
- ([c ma])
- ([i (in-range (+ k 1))]
- [j (in-range (+ k 1))])
- (min c (abs (- (- ma i) (+ mi j))))
- )
- )
- )
- )
- (define (main)
- (define (r l k e)
- (display
- (format
- "(smallest-range-i ~a ~a) = ~a | Exp: ~a\n"
- l k (smallest-range-i l k) e
- )
- )
- )
- (r '(1) 0 0)
- (r '(0 10) 2 6)
- (r '(1 3 6) 3 0)
- (r '(506 4763 8681 4243 4040 8587 9235 442 1865 2820) 5899 0)
- )
- (main)
|