All pastes #523584 Raw Edit

Unnamed

public text v1 · immutable
#523584 ·published 2007-05-30 20:47 UTC
rendered paste body
(define (normalize-impl n mult)
     (cond 
      ((=  n 0)   (list 0 1))
      ((>= n 1)   (normalize-impl (* n 0.1) (* mult 10 )))
      ((< n  0.1) (normalize-impl (* n 10 ) (* mult 0.1)))
      (else (list n mult))))

(define (normalize x) 
  (normalize-impl x 1))
 
(define (nearest-impl val lst higher lower)
  (if (null? lst) (list higher lower)
    (let ((next (car lst))
          (rest (cdr lst)))
      (cond
       ((< val next) (nearest-impl val rest (min higher next) lower))
       (else (nearest-impl val rest higher (max lower next)))))))

(define (nearest val lst)
  (nearest-impl val lst (apply max lst) (apply min lst)))

(define (preferred val series)
  (let* ((nlst (normalize val))
	(n (car nlst)) (m (cadr nlst)))
    (map 
     (lambda (x) (* x m)) 
     (nearest n series))))

(display (preferred 0.4 '(.1 .2 .3 .35 .45 .8 .9)))