Протестируйте каждое расположение переменных без жесткого кодирования - PullRequest
1 голос
/ 12 марта 2019

У меня есть 9 различных переменных, мы будем называть их - я, я хочу проверить, если 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 различных аранжировок.Мне интересно, есть ли способ сделать это ... Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 12 марта 2019

Вы можете использовать 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).Это не должно быть проблемой, если все числа целые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...