Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 29-04-2022 22:57:04
- EL MEDIRI
- Invité
[Python] Enigme Informatique sur "Multiplication par 6".
Salut a tous !
Content de poster mon premier message sur ce forum, j'ai remarqué qu'il possedait des enigmes informatiques comme :
" Saurez vous compléter cette opération de sorte que tous les chiffres de 0 à 9 soient utilisés une seule fois : 6 fois ×xxx = xxxxx "
https://www.bibmath.net/jeux/index.php? … ordinateur
J'ai trouvé la réponse avec mon programme mais je suis curieux de voir les votres si vous en avez à partager car je pense que le mien n'est pas du tout optimisé ;)
PROGRAMMER AVEC PYTHON SUR SPYDER
Answer = []
Resultat = []
#Boucle qui trouve tous les nombres à 3 ou 4 chiffres composés de chiffre different. (sans le 6)
for a in Liste:
Liste1 = [0,1,2,3,4,5,7,8,9]
Liste1.remove(a)
for b in Liste1:
Liste2 = [0,1,2,3,4,5,7,8,9]
Liste2.remove(a)
Liste2.remove(b)
for c in Liste2:
Liste3 = [0,1,2,3,4,5,7,8,9]
Liste3.remove(a)
Liste3.remove(b)
Liste3.remove(c)
for d in Liste3:
Number = [str(a),str(b),str(c),str(d)]
Add = ''.join(Number)
Answer.append(int(Add))
#Boucle resolvant le probleme.
for X in Answer:
Liste_0 = [0,1,2,3,4,5,7,8,9]
Ope = 6*X
#Boucle et Boucle_Ops me permette de traiter par la suite mes nombres comme des listes
Boucle = str(X)
Boucle_Ope = str(Ope)
#Je supprime les chiifres de la liste du nombre que j'ai multiplié par 6.
if len(Boucle) == 3:
Liste_0.remove(0)
for i in range(0,3):
Liste_0.remove(int(Boucle[i]))
else:
for i in range(0,4):
Liste_0.remove(int(Boucle[i]))
#J'enlève les cas qui ne peuvent pas fonctionner !
if len(Liste_0) != len(Boucle_Ope):
continue
if len(Boucle_Ope) == 3:
continue
#Je finis par regarder si le resultat est composé des chiffres restants dans ma liste_0.
if len(Boucle_Ope) == 5:
for q in Liste_0:
if str(q) == Boucle_Ope[0]:
Liste_0.remove(int(Boucle_Ope[0]))
for s in Liste_0:
if str(s) == Boucle_Ope[1]:
Liste_0.remove(int(Boucle_Ope[1]))
for d in Liste_0:
if str(d) == Boucle_Ope[2]:
Liste_0.remove(int(Boucle_Ope[2]))
for f in Liste_0:
if str(f) == Boucle_Ope[3]:
Liste_0.remove(int(Boucle_Ope[3]))
for g in Liste_0:
if str(g) == Boucle_Ope[4]:
Resultat.append(X)
print("1 nombre est trouvé !")
else :
for q in Liste_0:
if str(q) == Boucle_Ope[0]:
Liste_0.remove(int(Boucle_Ope[0]))
for s in Liste_0:
if str(s) == Boucle_Ope[1]:
Liste_0.remove(int(Boucle_Ope[1]))
for d in Liste_0:
if str(d) == Boucle_Ope[2]:
Liste_0.remove(int(Boucle_Ope[2]))
for f in Liste_0:
if str(f) == Boucle_Ope[3]:
Resultat.append(X)
print("1 nombre est trouvé !")
#Enfin, je regarde les resultats.
print(Resultat)
#2 04-05-2022 19:35:30
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : [Python] Enigme Informatique sur "Multiplication par 6".
Bonjour,
Je te propose ça :
for i in range(1234,9876):
nb=i*6
N0,N1=str(i),str(nb)
Utilises=[]
if not len(N1)==5 or "6" in N0 or "6" in N1:
pass
else:
Utilises=list(N0)+list(N1)
Utilises = list(set(Utilises)) # je supprime les doublons
if len(Utilises)==9:
print ("Réponse :",N0,"x 6 =",N1)
Sortie :
Réponse : 5817 x 6 = 34902
Question(s) ?
@+
Hors ligne







