我有9个不同的变量,我们将它们称为-i,我要测试
a+b+c == d+e+f & a+b+c == g+h+i & a+b+c == a+d+g & a+b+c == b+e+h & a+b+c == c+f+i & a+b+c == a+e+i & a+b+c == c+e+g
。但是有一个问题。我想测试所有可能的安排,例如交换b和h甚至更多的变量。我还计算出有45360种不同的安排。我想知道是否有任何可能的方法可以做到……我将不胜感激!
答案 0 :(得分:0)
您可以使用itertools.permutations生成所有排列的列表,然后可以对它们进行求和,或者编写自己的自定义添加函数:
def add3(n1, n2, n3):
return n1+n2+n3
list_of_nums = [a, b, c, d, e, f, g, h, i]
all_perm_sums = (add3(n1, n2, n3) for n1, n2, n3 in itertools.permutations(list_of_nums, 3))
all_perm_sums_are_equal = len(set(all_perm_sums)) == 1
提示:请注意浮点数,因为浮点加法运算不是可交换的,a+b
不一定等于b+a
,并且它们也不是关联的,(a+b)+c
不一定是等于a+(b+c)
。如果所有数字都是整数,这应该不是问题。