Énoncé original

Question
Proposez un programme Python résolvant l'exercice.
- Un code possible
- Un code amélioré
On nomme d1
le nombre en haut à gauche, d2
le
nombre en haut à droite, d3
le nombre au centre, d4
le nombre en bas à gauche et d5
le nombre en bas à droite.
Un entier naturel di
participant à une somme de valeur
s
aura pour valeur maximale s
. D'où les bornes
choisies pour les boucles.
for d1 in range(0,24) :
for d2 in range(0, 28):
for d3 in range(0,24):
for d4 in range(0,36):
for d5 in range(0,30):
if d1+d2 == 30 and d1+d4 == 36 and d1+d3 == 24 :
if d2+d3 == 28 and d2+d5 == 36 :
if d3+d4 == 34 and d3+d5 == 30 :
if d4+d5 == 42 :
print("d1 = ", d1)
print("d2 = ", d2)
print("d3 = ", d3)
print("d4 = ", d4)
print("d5 = ", d5)
On obtient :
d1 = 13 d2 = 17 d3 = 11 d4 = 23 d5 = 19
On pourra, entre autres, comparer et expliquer les vitesses d'exécution des deux codes.
for d1 in range(0,24) :
d2 = 30-d1
d3 = 24-d1
if d2 + d3 == 28 :
d4 = 36 - d1
if d3 + d4 == 34 :
d5 = 36 - d2
if d3+d5 == 30 and d4+d5 == 42 :
print("d1 = ", d1)
print("d2 = ", d2)
print("d3 = ", d3)
print("d4 = ", d4)
print("d5 = ", d5)