Class: Romanconvert
- Inherits:
-
Object
- Object
- Romanconvert
- Defined in:
- lib/romanconvert.rb
Class Method Summary collapse
Class Method Details
.arabs(numeral) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# 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) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# 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 |