Мазмұнға өту

Module:RomanNumber

Уикипедия — ашық энциклопедиясынан алынған мәлімет

Бұл модульдің құжаттамасын Module:RomanNumber/doc бетінде бастай аласыз

local m = {}
 
-- Мыңдықтар, жүздіктер, ондықтар мен бірліктер кестесі
local digit_1000 = {[0] = "", [1] = "M", [2] = "MM", [3] = "MMM"}
local digit_100  = {[0] = "", [1] = "C", [2] = "CC", [3] = "CCC", [4] = "CD", [5] = "D", [6] = "DC", [7] = "DCC", [8] = "DCCC", [9] = "CM"}
local digit_10   = {[0] = "", [1] = "X", [2] = "XX", [3] = "XXX", [4] = "XL", [5] = "L", [6] = "LX", [7] = "LXX", [8] = "LXXX", [9] = "XC"}
local digit_1    = {[0] = "", [1] = "I", [2] = "II", [3] = "III", [4] = "IV", [5] = "V", [6] = "VI", [7] = "VII", [8] = "VIII", [9] = "IX"}
 
-- Санды рим цифрына айналдыру функциясы
function m.toRomanNumber(n_number)
    n_number = tonumber(n_number)
    if not n_number or n_number < 1 or n_number > 3999 then
        return "" 
    end
    
    local n_1000, n_100, n_10, n_1
    n_1000    = math.floor(n_number/1000)
    n_number  = n_number - 1000*n_1000
    n_100     = math.floor(n_number/100)
    n_number  = n_number - 100*n_100
    n_10      = math.floor(n_number/10)
    n_1       = n_number - 10*n_10
    
    return digit_1000[n_1000]..digit_100[n_100]..digit_10[n_10]..digit_1[n_1]
end
 
-- Roman үлгісіне арналған функция
-- Қолданылуы: {{#invoke:RomanNumber|roman|200}}
function m.roman(frame)
    local arg = frame.args[1] or frame:getParent().args[1]
    return m.toRomanNumber(arg)
end
 
return m