Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#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


Liste = [0,1,2,3,4,5,7,8,9]
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

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quarantedeux moins six
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums