Lua 创建mix和max函数

Lua 创建mix和max函数,lua,Lua,我有一个函数,它告诉我两个供应商的元素之间是否存在源之间的交叉(不允许)。我不会讨论它是如何构造的,因为它需要很多解释,我会尽量保持简单。您需要知道的是,它采用两个串联的供应商名称,如果它们没有重叠或do(分别),则返回true/false。 例如 现在,我想找到商店的最佳组合,以获得产品a,而无需多次致电来源。对于两个商店来说,这很简单(我在前面构建了一个表,其中已经包含了供应商): 但是,随着供应商数量的增加,情况变得更加复杂: vendorsCalled = {"Tesco", "Sain

我有一个函数,它告诉我两个供应商的元素之间是否存在源之间的交叉(不允许)。我不会讨论它是如何构造的,因为它需要很多解释,我会尽量保持简单。您需要知道的是,它采用两个串联的供应商名称,如果它们没有重叠或do(分别),则返回true/false。 例如

现在,我想找到商店的最佳组合,以获得产品a,而无需多次致电来源。对于两个商店来说,这很简单(我在前面构建了一个表,其中已经包含了供应商):

但是,随着供应商数量的增加,情况变得更加复杂:

vendorsCalled = {"Tesco", "Sainsburys", Waitrose"}
而4又变得更难了

还值得注意的是,它们在不同的地方(1,2,3,4个商店)使用,因此我可以为每个地方使用单独的函数来定义使用了多少个商店

我还需要能够计算出哪些供应商我的最终数字蒸汽从


是否有更好、更简洁的方法来避免编写这些易出错的日志脚本?

tescoProductA等是否可能为负数?它们可以为0,也可以不存在,但不能为负数
vendorsCalled = {"Tesco", "Sainsburys"}

if noCrossover[vendorsCalled[1] .. vendorsCalled[2]] then
    numProductsAgr = tescoProductA + sainsburysProductA
else
    numProductsAgr = math.max(tescoProductA, sainsburysProductA)
end
vendorsCalled = {"Tesco", "Sainsburys", Waitrose"}
if  noCrossover[vendorsCalled[1] .. vendorsCalled[2]] and
    noCrossover[vendorsCalled[1] .. vendorsCalled[3]] and
    noCrossover[vendorsCalled[2] .. vendorsCalled[3]] then
        numProductsAgr123 = tescoProductA + sainsburysProductA + waitroseProductA
    else 
        numProductsAgr123 = 0
end 
if noCrossover[vendorsCalled[1] .. vendorsCalled[2]] then
    numProductsAgr12 = tescoProductA + sainsburysProductA
else
    numProductsAgr12 = math.max(tescoProductA, sainsburysProductA)
end
if noCrossover[vendorsCalled[1] .. vendorsCalled[3]] then
    numProductsAgr13 = tescoProductA + waitroseProductA
else
    numProductsAgr13= math.max(tescoProductA, waitroseProductA)
end  
if noCrossover[vendorsCalled[2] .. vendorsCalled[3]] then
    numProductsAgr23 = sainsburysProductA + waitroseProductA
else
    numProductsAgr23 = math.max(sainsburysProductA + waitroseProductA)
end
numResidencyMatchesAgr = math.max(numProductsAgr123 , numProductsAgr12 , numProductsAgr13 , numProductsAgr23 )