(def valtab { 1000 "M" 900 "CM" 500 "D" 400 "CD" 100 "C" 90 "XC" 50 "L" 40 "XL" 10 "X" 9 "IX" 5 "V" 4 "IV" 1 "I" }) (println valtab) (def lookup (sort > (map first valtab))) (println lookup) (defn stepToInt [n] (let [x (some #(if (<= % n) %) lookup)] (list (valtab x) (- n x)))) (println (stepToInt 3500))
Standard input is empty
{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)