Модуль:Песочница/AlphaRho/RomanToInt

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация
local p = {}

local roman = {
  I = 1,
  IV = 4,
  V = 5,
  IX = 9,
  X = 10,
  XL = 40,
  L = 50,
  XC = 90,
  C = 100
}

function p.main(frame)
  local s = frame.args[1]:upper()
  local i = 1
  local num = 0
  while i <= s:len() do
    local c = nil
    if i < s:len() then
      c = roman[s:sub(i, i+1)]
    end
    if c then
      num = num + c
      i = i + 2
    else
      num = num + roman[s:sub(i, i)]
      i = i + 1
    end
  end
  return num
end

return p