Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.54 KB | None | 0 0
  1. MIDDLE = 5
  2. REM_TO_REVERSE = 4
  3. SYMBOLS = %w(I V X L C D M)
  4.  
  5. # @param {Integer} num
  6. # @return {String}
  7. def int_to_roman(num)
  8.  num.to_s.reverse.chars.each_with_object(i: 0, result: '') do |val, memo|
  9.   memo[:result] = num_to_roman(val.to_i, memo[:i] * 2) + memo[:result]
  10.   memo[:i] += 1
  11.  end[:result]
  12. end
  13.  
  14. def num_to_roman(num, order = 0)
  15.  return '' if num == 0
  16.  int = num / MIDDLE
  17.  rem = num % MIDDLE
  18.  return SYMBOLS[order] + SYMBOLS[order+int+1] if rem == REM_TO_REVERSE
  19.  return (int > 0 ? SYMBOLS[order+1] : '') + SYMBOLS[order] * rem
  20. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement