Full code:
cp1=[1,2,3,4,5,6]
cp1=[1,2,3,4,5,6]
cn1=[7,8,9,10,11,12]
cn2=[13,14,15,16,17,18]
cn3=[19,20,21,22,23,24]
cn4=[25,26,27,28,29,30]
import itertools
sets = [cp1,cn1];
ks = [3,2]
for i in itertools.product(*[itertools.combinations(set, k) for set, k in zip(sets, ks)]):
a = i[0]+i[1]
for i in itertools.permutations(a) :
i_sum1 = i[0] + i[1]
i_sum2 = i_sum1 + i[2]
i_sum3 = i_sum2 + i[3]
i_sum4 = i_sum3 + i[4]
i2_sum1 = i[1] + i[2]
i2_sum2 = i2_sum1 + i[3]
i2_sum3 = i2_sum2 + i[4]
i3_sum1 = i[2] + i[3]
i3_sum2 = i3_sum1 + i[4]
i4_sum1 = i[3] + i[4]
allsum =(i_sum1, i_sum2,i_sum3,i_sum4, i2_sum1, i2_sum2, i2_sum3, i3_sum1,i3_sum2,i4_sum1)
if (i_sum1 or i_sum2 or i_sum3 or i_sum4 or i2_sum1 or i2_sum2 or i2_sum3 or i3_sum1 or i3_sum2 or i4_sum1) not in (cn1 or cn2 or cn3) :
for b in itertools.product(cn4, repeat=2):
if (b[0] and b[1]) in allsum :
print (i,allsum)
Explanation:
-
random lists
cp1=[1,2,3,4,5,6] cn1=[7,8,9,10,11,12] cn2=[13,14,15,16,17,18] cn3=[19,20,21,22,23,24] cn4=[25,26,27,28,29,30] -
combination between 2 lists, using 3 elements of one and 2 of the other one for each result
import itertools sets = [cp1,cn1]; ks = [3,2] for i in itertools.product(*[itertools.combinations(set, k) for set, k in zip(sets, ks)]): -
merging the results
a = i[0]+i[1] -
permutation of the results
for i in itertools.permutations(a) : -
specific sum of the permutations
i_sum1 = i[0] + i[1] i_sum2 = i_sum1 + i[2] i_sum3 = i_sum2 + i[3] i_sum4 = i_sum3 + i[4] i2_sum1 = i[1] + i[2] i2_sum2 = i2_sum1 + i[3] i2_sum3 = i2_sum2 + i[4] i3_sum1 = i[2] + i[3] i3_sum2 = i3_sum1 + i[4] i4_sum1 = i[3] + i[4] allsum =(i_sum1, i_sum2,i_sum3,i_sum4, i2_sum1, i2_sum2, i2_sum3, i3_sum1,i3_sum2,i4_sum1)print only especifics results:
-
avoid the the result if it sum are in the lists, cn1, cn2, or cn3: (here is where I'm having problems)
if (i_sum1 or i_sum2 or i_sum3 or i_sum4 or i2_sum1 or i2_sum2 or i2_sum3 or i3_sum1 or i3_sum2 or i4_sum1) not in (cn1 or cn2 or cn3) : -
Print only the remain results that contain 2 elements of a certain list, cn4 (and here)
for b in itertools.product(cn4, repeat=2): if (b[0] and b[1]) in allsum : print (i,allsum)
Output:
the first result is (1, 2, 3, 7, 12) (3, 6, 13, 25, 5, 12, 24, 10, 22, 19) it shows that the 6, and the 7 parts are not working. 6ª should prevent it because it contain (13,12,24,22,19),elements of cn1, cn2 and cn3. And 7ª should prevent it because it do not contain two elements of cn4, but only one, "25".
Aucun commentaire:
Enregistrer un commentaire