f
Мы делаем комплексный маркетинг в стоматологиях.
Приводим от 200 пациентов в клинику за месяц, первые 30 пациентов в первые 7 дней. С гарантией выполнения работ по договору.
Пишете в ЛС кому актуально.
Size: a a a
f
DF
IA
DF
DF
З
З
АВ
MT
D
function miniMaxSum(arr)
function sum(arg, ...)
local total = arg
local addarg = {...}
for _,v in pairs(addarg) do total = total + v end
return total
end
table.sort(arr)
print(string.format("%d %d", sum(table.unpack(arr,1,#arr-1)), sum(table.unpack(arr,2,#arr))))
return
end
S
IA
S
function miniMaxSum(arr)
function sum(arg, ...)
local total = arg
local addarg = {...}
for _,v in pairs(addarg) do total = total + v end
return total
end
table.sort(arr)
print(string.format("%d %d", sum(table.unpack(arr,1,#arr-1)), sum(table.unpack(arr,2,#arr))))
return
end
local unpack = unpack or table.unpack table.sort изменяет передаваемую таблицу. Это может быть вредно;sum, которая принимает переменное число аргументов будет работать некорректно, если в таблице более пары тысяч значений (зависит от зашитой в луа константы), оно может упасть с переполнением луа-стека;miniMaxSum возвращает? Она только принтит, как assert.are.equal определит, что ей вернула функция?S
S
function miniMaxSum(arr)
function sum(arg, ...)
local total = arg
local addarg = {...}
for _,v in pairs(addarg) do total = total + v end
return total
end
table.sort(arr)
print(string.format("%d %d", sum(table.unpack(arr,1,#arr-1)), sum(table.unpack(arr,2,#arr))))
return
end
function miniMaxSum(arr)Не создаются ни функции ни таблицы, нет шансов переполнения стека, ничего не сортируется и вообще, минимум лишних движений, и сложность всегда равна O(n) а не O(n log(n) + 2n) в среднем.
local min, max, summ = math.huge, -math.huge, 0
-- for в ~1.5-2 раза быстрее pairs/ipairs
for i = 1, #arr do
local v = arr[i]
if v < min then min = v end
if v > max then max = v end
summ = summ + v
end
return summ - max, summ - min
end
print(miniMaxSum{1, 2, 3, 4, 5})