Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: Rosetta PGA-TRAM

by merlponk (Scribe)
on Jun 15, 2009 at 10:13 UTC ( #771607=note: print w/ replies, xml ) Need Help??

in reply to Rosetta PGA-TRAM

Well, I'm not only new to Perlmonks, but even newer to Lisp, as I just started to learn it. So, since a lot of different solutions have been posted, I thought I post my Common Lisp version (there's probably a better way to do it and I hope there isn't a bug):

(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))))))
Update: Ok, the
(if (not (equal roman ""))
could probably be removed, because no error checking is necessary regarding to the description, and it is halfhearted to boot.

Comment on Re: Rosetta PGA-TRAM
Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://771607]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (17)
As of 2015-07-31 14:56 GMT
Find Nodes?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...

    Results (278 votes), past polls