我有这个向量:[a,a,b,c,c]这是一个以无穷大重复的模式,我想找到它的所有圆形唯一排列。
[a,a,b,c,c] = [a,b,c,c,a]不好(向右移动了1步)
[a,a,b,c,c] = [b,c,c,a,a]不好(向右移动2步)
[a,c,b,a,c]好的[b,c,a,a,c]好的
打个比方是:一个有5个座位的圆桌会议。以所有可能的独特方式将两个男性,一个女性和一个孩子(无性别)放置在一起。
这个numpy,scipy等有智能功能吗,非常感谢您的帮助。
布·埃里克
如果我对您的理解正确,那么类似的事情可以为您提供帮助
from itertools import permutations
vector = [1,-1,0,1,-1]
unique_permutations = set(permutations(vector))
already_reviewed = []
for p in list(unique_permutations):
if p not in already_reviewed:
circular_permutations = [p[i:] + p[:i] for i in range(len(p))]
already_reviewed.extend(circular_permutations)
unique_permutations.difference_update(circular_permutations[1:])
print(unique_permutations)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句