Как работает конвертация арабских чисел в римские?

я начинающий в программировании на Ruby, я начал делать проект my_roman_numerals_converter, дословно конвертировать арабские числа в римские. И недавно я наткнулся на такой код, он работает правильно, так как надо, но я его не понимаю. А я хочу понимать его, поэтому может кто нибудь объяснить как работает данный код?

def my_roman_numerals_converter(param_1)
    symbols = {0=>["I","V"],1=>["X","L"],2=>["C","D"],3=>["M"]}
    reversed_digits = param_1.to_s.split(//).reverse
    romans =[]
    reversed_digits.length.times do |i|
      if reversed_digits[i].to_i< 4
        romans<<(symbols[i][0]*reversed_digits[i].to_i)
      elsif reversed_digits[i].to_i == 4
        romans<<(symbols[i][0]+ symbols[i][1])
      elsif reversed_digits[i].to_i == 9
        romans<<(symbols[i][0] + symbols[i+1][0])
      else
        romans<<(symbols[i][1] + (symbols[i][0]*((reversed_digits[i].to_i)-5)))
      end
      end
    romans.reverse.join("")
  end

Ответы (0 шт):