in reply to Rosetta PGA-TRAM
Update: Ok, the(defun roman_to_dec (roman) (if (not (equal roman "")) (let ((rtoa '((#\M . 1000) (#\D . 500) (#\C . 100) (#\L . 50) (#\X . 10) (#\V . 5) (#\I . 1)))) (reduce #'(lambda (a b) (- (+ a b) (* (mod a b) 2))) (map 'list #'(lambda (c) (cdr (assoc c rtoa))) (string-upcase roman))))))
(if (not (equal roman ""))could probably be removed, because no error checking is necessary regarding to the description, and it is halfhearted to boot.
|
---|