0

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

local data ={
[100000000]='string1',
[250000000]='string2',
[500000000]='string3',
}

local calc=780325665

我想用 calc 计算每个数据索引,例如

result= calc-(500000000+250000000)

我喜欢奖励结果和数据[500000000],数据[250000000]= string1 and 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

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

4

3 回答 3

0

我不确定你到底想做什么,但试试这个:

1. Get rid of "repeat" and "until calc<ind"
2. Change "if calc <0" to "if calc<ind"

也许您可以添加更多示例?

于 2013-09-10T03:47:17.443 回答
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

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

于 2013-09-10T09:55:57.690 回答
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

如果这不是您想要的,请编辑您的问题以提供更多详细信息。可能举个例子。

于 2013-09-10T06:30:29.157 回答