class Romanconvert

Public Class Methods

arabs(numeral) click to toggle source
# File lib/romanconvert.rb, line 71
def self.arabs (numeral)
  total = 0
  previousNum = 0
  numeral_value = {"I" => 1, "V" => 5, "X" => 10, "L" => 50, "C" => 100, "D" => 500, "M" => 1000}
  numeral.reverse.each_char do | num |
    if previousNum > numeral_value[num]
        total -= numeral_value[num]
        previousNum = numeral_value[num]
    else
        total += numeral_value[num]
        previousNum = numeral_value[num]
    end
  end
  return total
end
romans(number) click to toggle source
# File lib/romanconvert.rb, line 3
def self.romans(number)
  numeral = []

  num_M = number / 1000
  number = number % 1000
  num_M.times do
    numeral.push("M")
  end

  num_D = number / 500
  number = number % 500
  num_D.times do
    numeral.push("D")
  end

  num_C = number / 100
  number = number % 100
  if (num_C == 4) && (numeral[-1] == "D")
    numeral.pop
    numeral.push("CM")
  elsif num_C == 4
    numeral.push("CD")
  else
    num_C.times do
      numeral.push("C")
    end
  end

  num_L = number / 50
  number = number % 50
  num_L.times do
    numeral.push("L")
  end

  num_X = number / 10
  number = number % 10
  if (num_X == 4) && (numeral[-1] == "L")
    numeral.pop
    numeral.push("XC")
  elsif num_X == 4
    numeral.push("XL")
  else
    num_X.times do
      numeral.push("X")
    end
  end

  num_V = number / 5
  number = number % 5
  num_V.times do
    numeral.push("V")
  end

  if (number == 4) && (numeral[-1] == "V")
    numeral.pop
    numeral.push("IX")
  elsif number == 4
    numeral.push("IV")
  else
    number.times do
      numeral.push("I")
    end
  end

  numeral.join

end