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 :
1st - 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]
2nd - combination betwen 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)]):
3 - mergeing the results
a = i[0]+i[1]
4 - permutation of the results
for i in itertools.permutations(a) :
5 - 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 :
6 - avoid all the the results if any of its sums are in the conjunts, cn2 or cn3 :
(here is where iam 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) :
7 - Print only the remain results that contain 2 elements of a certain conunct,cn4
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), and 7ª should prevent it because it do not contain two elements of cn4,but only one, "25".
help.
Aucun commentaire:
Enregistrer un commentaire