我正在尝试编写一个函数,它获取有关数字(货币)列表的一些聚合信息,并返回具有这些属性的具体列表。例如,我要一个平均值265.43美元,总额6000美元,最高1000美元的清单,我会得到一个完整的清单作为回报,其价值平均值265.43美元,总额6000美元,等等。可能有很多清单可以满足这些属性,但我不需要一一列举,我只需要返回其中的任何一个。
以下是列表的属性:
它的长度是N
总共是S
平均值是
最低的数字是l
最高的数字是h
它符合美元区间的细分:
X值小于75美元
Y值在75到200美元之间
Z值大于200美元
我想为这些参数中的每一个传递值,并返回一个与它们匹配的列表。我有几百个这样的集合{N,S,a,L,H,X,Y,Z}但是我没有用来生成它们的任何支持列表我不需要生成的列表与原始列表完全相同,我只需要从聚合的角度看它们与原始列表相同。
我想这样称呼它-->list=gimmathalist(n,s,a,l,h,x,y,z)
我不知道从哪里开始寻找这方面的信息,所以任何帮助都是值得赞赏的,即使它只是一个链接或谷歌搜索词。如果你能抽出时间,一些真正的代码会很好,但我会尽我所能。
最佳答案
一些想法:
N是多余的,因为它是x、y和z的和
A是多余的,因为它等于S / N
L和H可以用X、Y和Z子集的广义价格范围条件代替您可以假设这些值出现在列表中,并通过相应地调整X、Y和Z来解决缩减问题(S' = S - L - H, X', Y', Z'),同时限制缩减列表中的所有数字都在[L,R]范围内
对于X'值,我们有[L,min(75,H)]、Y'值[max(75,L)、min(H,200)]、Z'[max(L,200,H]
我们可以很容易地计算下限X' * L + Y' * max (75, L) + Z' * max(L, 200)和我们可以创建的可能和的相应上限。通过一个简单的贪心算法(留给读者练习,考虑X、Y和Z范围的单个和上下界),我们还可以生成该范围内的每个和,包括