fork(1) download
  1. (def valtab { 1000 "M" 900 "CM" 500 "D" 400 "CD" 100 "C" 90 "XC" 50 "L"
  2. 40 "XL" 10 "X" 9 "IX" 5 "V" 4 "IV" 1 "I" })
  3.  
  4. (println valtab)
  5.  
  6. (def lookup (sort > (map first valtab)))
  7.  
  8. (println lookup)
  9.  
  10. (defn stepToInt [n]
  11. (let [x (some #(if (<= % n) %) lookup)]
  12. (list (valtab x) (- n x))))
  13.  
  14. (println (stepToInt 3500))
  15.  
Success #stdin #stdout 0.92s 214656KB
stdin
Standard input is empty
stdout
{1 I, 4 IV, 100 C, 900 CM, 5 V, 40 XL, 1000 M, 9 IX, 10 X, 400 CD, 50 L, 500 D, 90 XC}
(1000 900 500 400 100 90 50 40 10 9 5 4 1)
(M 2500)