18 lines
467 B
Text
18 lines
467 B
Text
(var numerals {"M" 1000 "D" 500 "C" 100 "L" 50 "X" 10 "V" 5 "I" 1})
|
|
|
|
; Approach A
|
|
(function ro->ar r
|
|
(-> (reverse (upper-case r))
|
|
(map numerals)
|
|
(split-with val)
|
|
(map (.. +0))
|
|
(reduce @(((< % %1) + -)))))
|
|
|
|
; Approach B
|
|
(function ro->ar r
|
|
(-> (upper-case r)
|
|
(map numerals)
|
|
@(reduce (fn [sum lastv] curr [(+ sum curr ((< lastv curr) (* -2 lastv) 0)) curr]) [0 0])
|
|
0))
|
|
|
|
(map ro->ar ["MDCLXVI" "MMMCMXCIX" "XLVIII" "MMVIII"])
|