首页 > 解决方案 > 创建混合和最大功能

问题描述

我有一个函数可以告诉我两个供应商的元素之间的源之间是否存在交叉(不允许)。我不会详细介绍它是如何构建的,因为它需要大量的解释,并且我试图保持简单。您需要知道的是,它需要两个连接的供应商名称,如果它们没有重叠或没有重叠,则返回真/假(分别)。例如

noCrossover["TescoSainsburys"] = true

现在,我想找到获得产品 A 的最佳商店组合,而无需多次调用源。对于只有两家商店,这很容易(我之前构建了一个表,其中已经包含供应商):

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 )

4 又变得更难了。

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

我还需要能够确定我的最终号码来自哪些供应商

有没有更好、更简洁的方法来避免需要写出这些日志容易出错的脚本?

标签: lua

解决方案


推荐阅读