1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
tb_larg est un tableau de 4 entiers
lgtot est un entier
lg_intercalaire est un entier = 8
tab_Nbtableaux est un tableau de 4 entiers
tab_Best_scenario est un tableau de 4 entiers
nScore_best_scenario est un entier
ntableaux_best_scenario est un entier
tab_Best_scenario_sym est un tableau de 4 entiers
nScore_best_scenario_sym est un entier
score est un entier
tab_Nmax est un tableau de 4 entiers
i1,i2,i3,i4 est un entier
lgtot = 1100 // 11 mètres =1100 cm.
tb_larg = [90, 75, 60, 50 ] // Je mets les largeurs des tableaux en ordre décroissant, pour que le programme soit plus rapide.
tab_Nmax[1] = (lgtot - lg_intercalaire) / (tb_larg[1] + lg_intercalaire) // Si je mets uniquement des tableaux de type 1, je peux en mettre au max combien ?
POUR i1 = 0 _A_ tab_Nmax[1]
// je fais une hypothèse ; je mets i1 tableau de type 1.
tab_Nmax[2] = (lgtot - lg_intercalaire - i1 * (tb_larg[1] + lg_intercalaire) ) / (tb_larg[2] + lg_intercalaire)
// Du coup, avec i1 tableaux de type 1, je peux mettre au max tab_Nmax[2] de type 2
POUR i2 = 0 _A_ tab_Nmax[2]
// je fais une hypothèse ; je mets i1 tableau de type 1 et i2 tableaux de type 2.
tab_Nmax[3] = (lgtot - lg_intercalaire - i1 * (tb_larg[1] + lg_intercalaire) - i2 * (tb_larg[2] + lg_intercalaire) ) / (tb_larg[3] + lg_intercalaire)
// Du coup, avec i1 tableaux de type 1,et i2 tableaux de type 2, je peux mettre au max tab_Nmax[3] de type 3
POUR i3 = 0 _A_ tab_Nmax[3]
tab_Nmax[4] = (lgtot - lg_intercalaire - i1 * (tb_larg[1] + lg_intercalaire) - i2 * (tb_larg[2] + lg_intercalaire) - i3 * (tb_larg[3] + lg_intercalaire) ) / (tb_larg[4] + lg_intercalaire)
POUR i4 = tab_Nmax[4]-1 A tab_Nmax[4]
// La configuration i1, i2, i3, i4 convient , je peux placer (i1, i2, i3, i4 ) tableaux sur mon mur.
// Cette configuration est-elle mieux que la meilleure configuration déjà rencontrée.
score = i1* tb_larg[1] + i2* tb_larg[2] + i3* tb_larg[3] + i4* tb_larg[4]
SI score > nScore_best_scenario _OU_ ( score = nScore_best_scenario _ET_ i1+i2+i3+i4 < ntableaux_best_scenario ) ALORS
nScore_best_scenario = score
ntableaux_best_scenario = i1+i2+i3+i4
tab_Best_scenario[1] = i1
tab_Best_scenario[2] = i2
tab_Best_scenario[3] = i3
tab_Best_scenario[4] = i4
FIN
// Recherche du meilleur résultat, avec une répartition symétrique
SI modulo(i1,2) +modulo(i2,2)+modulo(i3,2)+modulo(i4,2) <= 1 ALORS
score = i1* tb_larg[1] + i2* tb_larg[2] + i3* tb_larg[3] + i4* tb_larg[4]
SI score > nScore_best_scenario_sym ALORS
nScore_best_scenario_sym = score
tab_Best_scenario_sym[1] = i1
tab_Best_scenario_sym[2] = i2
tab_Best_scenario_sym[3] = i3
tab_Best_scenario_sym[4] = i4
FIN
FIN
FIN
FIN
FIN
FIN
Info ( " Meilleur scénario remplissage ",tab_Best_scenario[1] , tab_Best_scenario[2] , tab_Best_scenario[3] , tab_Best_scenario[4] )
Info ( " Meilleur scénario remplissage + symétrie ",tab_Best_scenario_sym[1] , tab_Best_scenario_sym [2] , tab_Best_scenario_sym[3] , tab_Best_scenario_sym[4] ) |
Partager