Я кортеж скажу:Вычислить перестановки
my_tuple = ((1,2), 10)
и словарь:
diction = {1:(1,2,3,4,5,6,7,8,9), 2:(1,2,3,4,5,6,7,8,9), 3:(1,2,3,4,5,6,7,8,9)}
Первый элемент кортеж представляет некоторые переменные, которые каждый из них может быть назначен со значением 1, ..., 9 (согласно словарю).
Как вычислить все перестановки (без повторения) для этих переменных. Единственное ограничение у меня есть, что я хочу, значения моих переменных, чтобы иметь сумму 10
Например:
(var1) = 9
(var2) = 1
So (9,1) имеет сумму 10 и является допустимая перестановка.
Что я попытался это:
lst = []
first_var = my_tuple[0][0]
sec_var = my_tuple[0][1]
for i in diction[first_var]:
for j in diction[sec_var]:
if i != j:
if (i + j) == my_tuple[1]:
lst.append((i,j))
Моя проблема заключается в том, что кортеж с переменными имеет не всегда один и тот же размер (2 в данном случае). Он может содержать 3 или 4 переменных, поэтому цикл выше не работает.
Есть ли способ, которым я могу вычислить перестановки для более общего случая? Например, ((1,2,3), 20)?
Должен ли он использовать одно значение из каждой из словарных значений, соответствующих клавишам в кортеже? – thefourtheye
Можете ли вы добавить образец вывода для своего примера? –
Для tuple = ((1,2,3), 20) допустимая перестановка будет (8,9,3). Дело в том, что мой цикл работает только для 2 переменных. – prokiz