繁体   English   中英

Python将类型设置为向量而不重复

[英]Python set types to vectors without repetitions

我有k个向量和k类型,其中每个向量的长度为n。 n> k。

我需要将类型放在向量中,这样对于每个索引,我应该为每个向量使用不同的类型。 类型的总数应该在向量之间相等“。

例如,如果类型是

[“H”,“M”,“L”](k = 3,n = 6)

这是有效的:

v1 = ["H", "H","M","M","L","L"] , v2 = ["L", "L","H","H","M","M"], v3 = ["M", "M","L","L","H","H"] 

但这是无效的:

v1 = ["H", "H","M","M","L","L"] , v2 = ["L", "H","L","H","M","M"], v3 = ["M", "M","L","L","H","H"]

因为

v1 [1] == v2 [1]

这样做的最佳方法是什么?

谢谢!

nk的倍数时,此代码将生成满足约束的向量列表:

t = ["A", "B", "C", "D"]
n = 8
k = len(t)
vectors = [[t[(j+i)%k] for j in range(0,n)] for i in range(0,k)]

for v in vectors:
    print(v)

n不是k的倍数时,问题没有解决方案。 例如,使用[“A”,“B”](k = 2,n = 3),无法创建两个向量,使得每个索引包含不同的类型,并且每个类型包含相同数量的每个类型。 这里是满足第一个约束的所有可能的向量对,但是,没有一个满足第二个约束:

AAA AAB ABA ABB BAA BAB BBA BBB
BBB BBA BAB BAA ABB ABA AAB AAA

我尝试使用kn其他值并且同样的事情发生:我们可以在每个索引处实现不同的类型,但是不可能在每个向量中具有相同数量的每种类型。 原因是对于给定的索引,类型都是不同的(并且有k种类型)。 但由于所有向量都需要包含相同数量的每种类型,因此所有向量必须在某处具有所有k元素的副本。 如果我们决定重复一种类型,那么我们将不得不重复所有类型,因此n必然是k的倍数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM