Редактирование: Модуль:Roman
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 93: | Строка 93: | ||
end | end | ||
-- return p | |||
-- 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] = "LXXC", [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 p.toRoman(n_number) | |||
assert((n_number >= 1) and (n_number <= 3999)) | |||
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:Roman|roman|200}} | |||
function p.roman(frame) | |||
return p.toRoman(tonumber(frame.args[1])) | |||
end | |||
return p | return p |