lua - 创建混合和最大功能
问题描述
我有一个函数可以告诉我两个供应商的元素之间的源之间是否存在交叉(不允许)。我不会详细介绍它是如何构建的,因为它需要大量的解释,并且我试图保持简单。您需要知道的是,它需要两个连接的供应商名称,如果它们没有重叠或没有重叠,则返回真/假(分别)。例如
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 商店)使用,因此我可以为每个定义使用多少商店的地方使用单独的函数。
我还需要能够确定我的最终号码来自哪些供应商
有没有更好、更简洁的方法来避免需要写出这些日志容易出错的脚本?
解决方案
推荐阅读
- java - 字符串连接和附加在 foreach 中不起作用
- javascript - 在使用异步存储的 React Native 中,抽屉导航中的注销不起作用?
- jquery - jQuery可拖动区域
- algorithm - Naive-Matcher 最坏情况运行时间
- javascript - 使用 JavaScript 在父级内添加 HTML 标记
- php - 用x格式php替换日期
- node.js - firebase:QuerySnapShot 不为空,但在使用时出现“未定义”
- ios - 添加 Firebase SDK 后未调用 didRegisterForRemoteNotificationsWithDeviceToken。调酒禁用
- c# - 使用循环保存所有武器 ID 编号
- javascript - 如何用 Jest 模拟 DataTransfer