我想写一个函数,但我不知道该怎么做。
local data ={
[100000000]='string1',
[250000000]='string2',
[500000000]='string3',
}
local calc=780325665
我想用calc计算每一个数据索引,例如
result= calc-(500000000+250000000)
我喜欢奖励结果和数据[500000000],数据[250000000] = string1和string2
local calc=780325665
for ind,i in pairs(data) do
repeat
if calc< 0 then return end
print(calc,data[ind])
calc=calc-ind
until calc < ind
end
它不能像我想的那样工作,我希望它像我的例子那样
我想创建一个函数来计算总数中支付的官方金额。这些数字应该归还给我。例如。我有10,25,50和总数380
so 385 = (7*50) + (3*10) rest 5
local calc=780325665 --only example number
so i have 100000000,250000000,500000000 and total number calc
calc-(500000000+250000000) rest 30325665 because there are no smaller number
我将根据缩短的频率来奖励这两个数字
答案 0 :(得分:0)
我不确定你要做什么,但试试这个:
1. Get rid of "repeat" and "until calc<ind"
2. Change "if calc <0" to "if calc<ind"
也许您可以添加更多示例?
答案 1 :(得分:0)
如果我的问题正确 - 以下代码应该对您有用 -
local data ={
[1]='string1',
[2]='string2',
[10]='string4',
[25]='string3',
}
-- lets get the indices in their increasing order
local indices = {}
for n in pairs(data) do table.insert(indices, n) end
table.sort(indices, function(a, b) return a > b end)
local calc = 97
local result = {}
-- for every index, highest coming first
for _,v in ipairs(indices) do
-- if calc is bigger than this index
while calc >= v do
-- if this index has never been encountered, set it to 1 or add 1 to previous
result[v] = (result[v] or 0) + 1
-- reduce calc and check again
calc = calc - v
end
end
-- result is your output
如果这不是您想要的,请编辑您的问题以提供更多详细信息。可能有一个例子。
答案 2 :(得分:0)
如果您正在尝试计算并计算表中的所有数字,那么这可能很有用:
local count = 0
for k, v in pairs(data) do
count = count + 1
end
local total = 0
for i = 1, count do
total = total + data[i]
end
这个简单的代码可以帮助您计算表格内的所有数字并计算它们。