|
|
| (не показано 66 промежуточных версий этого же участника) |
| Строка 1: |
Строка 1: |
| local p = {}
| |
|
| |
|
| -- Простые правила образования множественного числа
| |
| local rules = {
| |
| {"ие$", "ие", "ия"}, -- здание -> здания
| |
| {"ка$", "ка", "ки"}, -- собака -> собаки
| |
| {"ок$", "ок", "ки"}, -- носок -> носки
| |
| {"ец$", "ец", "цы"}, -- молодец -> молодцы
| |
| {"ье$", "ье", "ья"}, -- зелье -> зелья
| |
| {"о$", "о", "а"}, -- окно -> окна
| |
| {"е$", "е", "я"}, -- поле -> поля
| |
| {"й$", "й", "и"}, -- край -> края
| |
| {"ь$", "ь", "и"} -- лошадь -> лошади
| |
| }
| |
|
| |
| -- Функция преобразования в множественное число для каждого слова
| |
| function p.main(frame)
| |
| local words = {}
| |
| for word in frame:gmatch("%S+") do
| |
| local pluralized = word
| |
| -- Применяем правила для образования множественного числа
| |
| for _, rule in ipairs(rules) do
| |
| if word:match(rule[1]) then
| |
| pluralized = word:gsub(rule[2].."$", rule[3])
| |
| break
| |
| end
| |
| end
| |
| table.insert(words, pluralized)
| |
| end
| |
| return table.concat(words, " ")
| |
| end
| |
|
| |
| return p
| |