Hello mailing list. This has already been posted on Usenet, sorry for the 
duplication. (The gateway seems to be one-way at the moment.)

Dave

-----

Hi,

My solution is available here:

http://www.dave.burt.id.au/ruby/roman_numerals.rb

It can be used as a library (it pollutes String and Integer :) or as
required from the command line, filtering integers to roman numeral strings
and vice-versa.

An outline:

# Contains methods to convert integers to roman numeral strings and
vice-versa.
module RomanNumerals

  # Maps roman numeral digits to their integer values
  DIGITS = {

  # The largest integer representable as a roman numerable by this module
  MAX = 3999

  # Stolen from O'Reilly's Perl Cookbook 6.23. Regular Expression Grabbag
  REGEXP = /^M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$/i

  # Maps some integers to their roman numeral values
  @@digits_lookup = DIGITS.inject({

  # Converts +int+ to a roman numeral
  def self.from_integer(int)
  # main loop:
    @@digits_lookup.keys.sort.reverse.each do |digit_value|
      while remainder >= digit_value

  # Converts +roman_string+, a roman numeral, to an integer
  def self.to_integer(roman_string)
  # main loop:
    roman_string.to_s.upcase.split(//).reverse.inject(0) do |memo, digit|

  # Returns true iif +string+ is a roman numeral.
  def self.is_roman_numeral?(string)

class String
  # Considers string a roman numeral numeral,
  # and converts it to the corresponding integer.
  def to_i_roman

  # Returns true iif the subject is a roman numeral.
  def is_roman_numeral?

class Integer
  # Converts this integer to a roman numeral.
  def to_s_roman

# Processes ARGF as per Quiz requirement - converts numbers to roman
numerals and vice versa
if __FILE__ == $0

Cheers,
Dave