On Fri, 4 Mar 2005 22:53:20 +0900, Ruby Quiz <james / grayproductions.net> wrote:
> The three rules of Ruby Quiz:
> 
> 1.  Please do not post any solutions or spoiler discussion for this quiz until
> 48 hours have passed from the time on this message.
> 
> 2.  Support Ruby Quiz by submitting ideas as often as you can:
> 
> http://www.rubyquiz.com/
> 
> 3.  Enjoy!
> 
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> 
> This week's quiz is to write a converter to and from Roman numerals.
> 
> The script should be a standard Unix filter, reading from files specified on the
> command-line or STDIN and writing to STDOUT.  Each line of input will contain
> one integer (between 1 and 3999) expressed as an Arabic or Roman numeral.  There
> should be one line of output for each line of input, containing the original
> number in the opposite format.
> 
> For example, given the following input:
> 
>         III
>         29
>         38
>         CCXCI
>         1999
> 
> The correct output is:
> 
>         3
>         XXIX
>         XXXVIII
>         291
>         MCMXCIX
> 
> If you're not familiar with or need a refresher on Roman numerals, the rules are
> simple.  First, there are seven letters associated with seven values:
> 
>         I = 1
>         V = 5
>         X = 10
>         L = 50
>         C = 100
>         D = 500
>         M = 1000
> 
> You can combine letters to add values, by listing them largest to smallest from
> left to right:
> 
>         II   is 2
>         VII  is 8
>         XXXI is 31
> 
> However, you may only list three consecutive identical letters.  That requires a
> special rule to express numbers like 4 and 900.  That rule is that a single
> lower value may proceed a larger value, to indicate subtraction.  This rule is
> only used to build values not reachable by the previous rules:
> 
>         IV is 4
>         CM is 900
> 
> But 15 is XV, not XVX.
> 
> 

Hello James,

I know that in reality roman numbers didn't always follow the
conventions given here, so everything is a little bit more complex,
but this are more or less clear rules. Maybe one should add the
additional rule that shorter numbers are preferred over longer ones to
disambiguate a bit more. But the question I'm after:

When I follow your rules, I calculate MIM for 1999, why do you propose
the slightly less readable: MCMXCIX for this purpose? Also this does
not seem to be consistent with XXIX for 29.

best regards,

Brian


-- 
Brian Schröäer
http://ruby.brian-schroeder.de/