Lua как используя unpack найти максимальное по модулю отрицательное число в строке таблице
Lua как используя unpack найти максимальное по модулю отрицательное число в строке таблице?
os.setlocale(""); -- Установка корректной кодировки
tbl = { { "C", 2, 1, 0, 0, 0, 0, 0 },
{ "базис", 1, 2, 3, 4, 5, 6, "b" },
{ 3, -4, -6, 1, 0, 0, 0, -20 },
{ 4, -2, 5, 0, 1, 0, 0, 27 },
{ 5, 7, 5, 0, 0, 1, 0, 63 },
{ 6, 3, -2, 0, 0, 0, 1, 23 },
{ "d", } }
print( math.max(unpack(tbl[2], 2, #tbl[1] - 1)) )
print( math.max(unpack(tbl[3])) )
Наверное это можно сделать с помощью возможностей unpack, чтобы не перебирать вручную элементы строки таблицы.
Заранее спасибо.
Ответы (1 шт):
Автор решения: ESkri
→ Ссылка
Тут поможет метатаблица для чисел
local tbl = {
{ "C", 2, 1, 0, 0, 0, 0, 0 },
{ "базис", 1, 2, 3, 4, 5, 6, "b" },
{ 3, -4, -6, 1, 0, 0, 0, -20 },
{ 4, -2, 5, 0, 1, 0, 0, 27 },
{ 5, 7, 5, 0, 0, 1, 0, 63 },
{ 6, 3, -2, 0, 0, 0, 1, 23 },
{ "d", }
}
-- При сравнении любого числа с любой строкой число будет меньше строки
debug.setmetatable(0, {__lt = function (a,b) return type(a) == "number" end})
-- Строки будут считаться больше чисел и не повлияют на поиск минимального числа
for n, line in ipairs(tbl) do
print(n, math.min(table.unpack(line)))
end
Выхлоп:
1 0
2 1
3 -20
4 -2
5 0
6 -2
7 d