Funny and useful scripts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
4.5 KiB

2 years ago
#!/usr/local/bin/lua53
-- Месяцы
m = { "января", "февраля", "марта", "апреля", "мая", "июня",
"июля", "августа", "сентября", "октября", "ноября", "декабря" }
-- Единицы
l1 = {
{ "первое", "одна", "первого" },
{ "второе", "две", "второго" },
{ "третье", "три", "третьего" },
{ "четвертое", "четыре", "четвертого" },
{ "пятое", "пять", "пятого" },
{ "шестое", "шесть", "шестого" },
{ "седьмое", "семь", "седьмого" },
{ "восьмое", "восемь", "восьмого" },
{ "девятое", "девять", "девятого" },
{ "десятое", "десять", "десятого" },
{ "одиннадцатое", "одиннадцать", "одиннадцатого" },
{ "двенадцатое", "двенадцать", "двенадцатого" },
{ "тринадцатое", "тринадцать", "тринадцатого" },
{ "четырнадцатое", "четырнадцать", "четырнадцатого" },
{ "пятнадцатое", "пятнадцать", "пятнадцатого" },
{ "шестнадцатое", "шестнадцать", "шестнадцатого" },
{ "семнадцатое", "семнадцать", "семнадцатого" },
{ "восемнадцатое", "восемнадцать", "восемнадцатого" },
{ "девятнадцатое", "девятнадцать", "девятнадцатого" },
{ "двадцатое", "двадцать", "двадцатого" }
}
-- Десятки
l10 = {
{ "десятое", "десять", "десятого" },
{ "двадцатое", "двадцать", "двадцатого" },
{ "тридцатое", "тридцать", "тридцатого" },
{ "", "сорок", "сорокового" },
{ "", "пятьдесят", "пятидесятого" },
{ "", "шестьдесят", "шестидесятого" },
{ "", "семьдесят", "семидесятого" },
{ "", "восемьдесят", "восьмидесятого" },
{ "", "девяносто", "девяностого" }
}
-- Сотни
l100 = {
{ "сто", "сотого" },
{ "двести", "двухсотого" }, { "триста", "трехсотого" },
{ "четыреста", "четырехсотого" }, { "пятьсот", "пятисотого" },
{ "шестьсот", "шестисотого" }, { "семьсот", "семисотого" },
{ "восемьсот", "восьмисотого" }, { "девятьсот", "девятисотого" }
}
-- Тысячи
l1000 = {
"тысячного", "двухтысячного", "трехтысячного", "четырехтысячного",
"пятитысячного", "шеститысячного", "семитысячного", "восьмитысячного",
"девятитысячного"
}
sym = { "тысяча", "тысячи", "тысяч" }
d = tonumber(os.date('%d'))
lettday = ""
if ( math.fmod(d, 10) == 0 ) then
lettday = l10[d / 10][1]
else
if ( d <= 20 ) then
lettday = l1[d][1]
else
n10 = d // 10
n1 = math.fmod(d, 10)
lettday = l10[n10][2] .. " " .. l1[n1][1]
end
end
lettmonth = m[tonumber(os.date('%m'))]
y = tonumber(os.date('%Y'))
n1000 = y // 1000
n100 = math.fmod(y,1000) // 100
n10 = math.fmod(y,100)
n1 = math.fmod(n10,10)
lettyear = ""
if ( n1000 > 0 and n100 == 0 and n10 == 0 and n1 == 0 ) then
lettyear = l1000[n1000]
elseif ( n1000 > 0 ) then
lettyear = l1[n1000][2]
if ( n1000 == 1 ) then
lettyear = lettyear .. " " .. sym[1]
elseif ( n1000 < 5 ) then
lettyear = lettyear .. " " .. sym[2]
else
lettyear = lettyear .. " " .. sym[3]
end
end
if ( n100 > 0 and n10 == 0 and n1 == 0 ) then
lettyear = lettyear .. " " .. l100[n100][2]
elseif ( n100 > 0 ) then
lettyear = lettyear .. " " .. l100[n100][1]
end
if ( n10 > 0 and n1 == 0 ) then
lettyear = lettyear .. " " .. l10[n10 / 10][3]
elseif ( n10 < 20 ) then
lettyear = lettyear .. " " .. l1[n10][3]
else
lettyear = lettyear .. " " .. l10[n10 // 10][2] .. " " .. l1[n1][3]
end
letters = lettday .. " " .. lettmonth .. " " .. lettyear .. " года"
print(letters)