Bonjour, mon post est un problème que je n'arrive pas à résoudre.
J'ai 2 séries de nombres, en les multipliants entre-eux (1 d'une série multiplié avec 1 autre de l'autre série) doit me donner un nombre prédifini en résultat (ou s'en approcher le plus possible).
Pour moi cela ressemble à de la combinaison, mais je ne trouve pas de solution à mon problème.
Exemple de problème concret :
SÉRIE 1 : 8 ; 14.5 ; 52 ; 100 ; 100 ; 100 ; 100 ; 4.6 ; 8 ; 29 ; 100 ; 100 ; 100 ; 5 ; 9 ; 32 ; 100 ; 100 ; 8.25 ; 14.75 ; 54 ; 100 ; 18.25 ; 33 ; 100 ; 50 ; 90 ; 100 ; 72
SÉRIE 2 : 11.5 ; 12.75 ; 26 ; 78 ; 100 ; 100 ; 100 ; 6.75 ; 6.50 ; 14 ; 42 ; 100 ; 100 ; 7.25 ; 7.50 ; 14 ; 45 ; 100 ; 11.5 ; 11.75 ; 24 ; 68 ; 24 ; 25 ; 50 ; 64 ; 66 ; 100 ; 27
Il faut que je trouve les couples pour ces séries qui font 188.5 ± 1.
Il faudrait donc un algorithme qui calcule : 1er nombre de la série 1 × 1er nombre de la série 2, si c'est pas égal à 188.5±1 alors on continue, 1er nombre de la série 1 × 2ème nombre de la série 2 et à nouveau vérifier la condition, et ainsi de suite ...
Désolé je n'arrive pas trop à expliquer ce que je veux, j'espère que c'est assez clair.
À la fin il me faudrait les couples solutions de valeurs (nb série 1; nb série 2) qui donnent 188.5 ± 1.
Voici un début de code qui ne fonctionne pas, en espérant que vous m'indiquiez mes erreurs et comment l'améliorer :
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 F1 = [8,14.5,52,100,100,100,100,4.6,8,29,100,100,100,5,9,32,100,100,8.25,14.75,54,100,18.25,33,100,50,90,100,72] F2 = [11.5,12.75,26,78,100,100,100,6.75,6.50,14,42,100,100,7.25,7.50,14,45,100,11.5,11.75,24,68,24,25,50,64,66,100,27] p=118.5 # résultat voulu e=1 # incertitude prod = [] for i in range (0,len(F1)): for j in range (0,len(F2)): if abs(p - F1(i) * F2(j)) <e : prod.append ((F1(i), F2(j))) print (prod)
Partager