; your code goes here
(define (order x)
(define (iterate-until init f pred)
(if (pred init)
init
(iterate-until (f init) f pred)))
(if (>= x 1)
(iterate-until 1 (lambda (p) (* p 10)) (lambda (p) (> (* p 10) x)))
(iterate-until 1 (lambda (p) (/ p 10)) (lambda (p) (<= p x)))))
(define (real-bar-length min)
(let ([p (order min)])
(cond ([<= min p] p)
([<= min (* 2 p)] (* 2 p))
([<= min (* 5 p)] (* 5 p))
(else (* 10 p)))))
(define (bar-length s)
(* s (real-bar-length (/ 100 s))))
(define (test s expect)
(display (= (bar-length s) expect))
(newline))
(test 3/1000 150)
(test 1/100 100)
(test 4/10 200)
(test 96/100 192)
OyB5b3VyIGNvZGUgZ29lcyBoZXJlCihkZWZpbmUgKG9yZGVyIHgpCiAgKGRlZmluZSAoaXRlcmF0ZS11bnRpbCBpbml0IGYgcHJlZCkKICAgIChpZiAocHJlZCBpbml0KQogICAgICBpbml0CiAgICAgIChpdGVyYXRlLXVudGlsIChmIGluaXQpIGYgcHJlZCkpKQogIChpZiAoPj0geCAxKQogICAgKGl0ZXJhdGUtdW50aWwgMSAobGFtYmRhIChwKSAoKiBwIDEwKSkgKGxhbWJkYSAocCkgKD4gKCogcCAxMCkgeCkpKQogICAgKGl0ZXJhdGUtdW50aWwgMSAobGFtYmRhIChwKSAoLyBwIDEwKSkgKGxhbWJkYSAocCkgKDw9IHAgeCkpKSkpCgooZGVmaW5lIChyZWFsLWJhci1sZW5ndGggbWluKQogIChsZXQgKFtwIChvcmRlciBtaW4pXSkKICAgIChjb25kIChbPD0gbWluIHBdIHApCgkgIChbPD0gbWluICgqIDIgcCldICgqIDIgcCkpCgkgIChbPD0gbWluICgqIDUgcCldICgqIDUgcCkpCgkgIChlbHNlICgqIDEwIHApKSkpKQoKKGRlZmluZSAoYmFyLWxlbmd0aCBzKQogICgqIHMgKHJlYWwtYmFyLWxlbmd0aCAoLyAxMDAgcykpKSkKCihkZWZpbmUgKHRlc3QgcyBleHBlY3QpCiAgKGRpc3BsYXkgKD0gKGJhci1sZW5ndGggcykgZXhwZWN0KSkKICAobmV3bGluZSkpCiAKICh0ZXN0IDMvMTAwMCAxNTApCiAodGVzdCAxLzEwMCAxMDApCiAodGVzdCA0LzEwIDIwMCkKICh0ZXN0IDk2LzEwMCAxOTIpCiAKIA==