Advertisement
KunalTyagi

Num2Roman

Oct 7th, 2020
1,241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.98 KB | None | 0 0
  1. #! /usr/bin/env ruby
  2.  
  3. def old_roman (integer)
  4.   enc = []
  5.   [[1000, "M"], [500, "D"], [100, "C"],
  6.    [50, "L"], [10, "X"], [5, "V"], [1, "I"]].each do |num, str|
  7.     enc.push(str * (integer / num))
  8.     integer = integer % num
  9.   end
  10.   enc.join
  11. end
  12.  
  13. def new_roman (integer)
  14.   if integer == 0 then
  15.     return ""
  16.   end
  17.   enc = []
  18.   enc.push("M" * (integer / 1000))
  19.   integer = integer % 1000
  20.   [[500, "D", 100, "C"], [50, "L", 10, "X"], [5, "V", 1, "I"]].each do |fnum, fstr, onum, ostr|
  21.     if integer >= onum then
  22.       puts integer
  23.       special_case = (integer / onum)
  24.       # to check for special case, you can also do
  25.       # if [4, 9].include? special_case then
  26.       if special_case % 5 == 4 then
  27.         enc.push(ostr, new_roman(integer + onum))
  28.         integer = 0
  29.       else
  30.         enc.push(fstr * (integer / fnum))
  31.         integer = integer % fnum
  32.         enc.push(ostr * (integer / onum))
  33.         integer = integer % onum
  34.       end
  35.     end
  36.   end
  37.   enc.join
  38. end
  39.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement