Lua如何用指数计算?

时间:2013-09-10 03:36:25

标签: lua

我想写一个函数,但我不知道该怎么做。

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

我将根据缩短的频率来奖励这两个数字

3 个答案:

答案 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

这个简单的代码可以帮助您计算表格内的所有数字并计算它们。