Aller au contenu
  • 0
Cybero

ABC + DEF = MIN

Énigmes

Dans l'addition suivante, tous les chiffres de 1 à 9 ont été remplacés par des lettres

 

  ABC

+ DEF

  MIN


Quel est le plus petit MIN possible ?

Méthode appréciée :)

 

Comme d'habitude, les premières réponses par spoiler ipsspoiler.png

Partager ce message


Lien à poster
Partager sur d’autres sites

11 réponses à cette énigme

Messages recommandés

  • 0
Révélation

tot0=999
for a in range(1,10):
    for b in range(1,10):
        for c in range(1,10):
            for d in range(1,10):
                for e in range(1,10):
                    for f in range(1,10):
                        if len({a,b,c,d,e,f})==6:
                            tot=100*(a+d)+10*(b+e)+(c+f)
                            n=tot%10
                            i=(int((tot-n)/10))%10
                            m=int((tot-n-10*i)/100)
                            if len({m,i,n})==3:
                                if m<10 and (i>0 and n>0):
                                    if len({a,b,c,d,e,f,m,i,n})==9:
                                        if tot<=tot0:
                                            tot0=tot
                                            print(100*a+10*b+c,100*d+10*e+f,tot)

Ce programme Python tout en finesse me dit que min est  459 (173+286 par exemple)

 

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Révélation

Je trouve 405 avec 137 + 268.

 

Pour la preuve, un petit truc tout en finesse :emu:

Révélation

int min = 999;
        List<Integer> utilise = new ArrayList<Integer>();
        for(int a=1; a<10; a++){
            utilise.add(a);
            for(int b=1; b<10; b++){
                if(!utilise.contains(b)){
                    utilise.add(b);
                    for(int c=1; c<10; c++){
                        if(!utilise.contains(c)){
                            utilise.add(c);
                            for(int d=1; d<10; d++){
                                if(!utilise.contains(d)){
                                    utilise.add(d);
                                    for(int e=1; e<10; e++){
                                        if(!utilise.contains(e)){
                                            utilise.add(e);
                                            for(int f=1; f<10; f++){
                                                if(!utilise.contains(f)){
                                                    utilise.add(f);
                                                    int result = a*100+b*10+c + d*100+e*10+f;
                                                    int g = Math.abs(result/100);
                                                    if(!utilise.contains(g)) {
                                                        utilise.add(g);
                                                        int h = Math.abs((result-g*100)/10);
                                                        if(!utilise.contains(h)){
                                                            utilise.add(h);
                                                            int i = result-g*100-h*10;                                                    
                                                            if(!utilise.contains(i)){
                                                                if(result < min){
                                                                    min = result;
                                                                    int abc = a*100+b*10+c;
                                                                    int def = d*100+e*10+f;
                                                                    System.out.println("min : " + min + "abc : " + abc + "def : " + def);
                                                                }}
                                                            utilise.remove(7);}
                                                        utilise.remove(6);}
                                                    utilise.remove(5);}}
                                            utilise.remove(4);}}
                                    utilise.remove(3);}}
                            utilise.remove(2);}}
                    utilise.remove(1);}}
            utilise.remove(0);}

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Ah merde ... j'ai pas mis de boucle sur les derniers chiffres rofl ...

 

Révélation

459, avec 173+286

 

preuve améliorée :p 

Révélation

int min = 999;
        List<Integer> utilise = new ArrayList<Integer>();
        for(int a=1; a<10; a++){
            utilise.add(a);
            for(int b=1; b<10; b++){
                if(!utilise.contains(b)){
                    utilise.add(b);
                    for(int c=1; c<10; c++){
                        if(!utilise.contains(c)){
                            utilise.add(c);
                            for(int d=1; d<10; d++){
                                if(!utilise.contains(d)){
                                    utilise.add(d);
                                    for(int e=1; e<10; e++){
                                        if(!utilise.contains(e)){
                                            utilise.add(e);
                                            for(int f=1; f<10; f++){
                                                if(!utilise.contains(f)){
                                                    utilise.add(f);
                                                    int result = a*100+b*10+c + d*100+e*10+f;
                                                    int g = Math.abs(result/100);
                                                    if(!utilise.contains(g) && g!= 0 && g < 10) {
                                                        utilise.add(g);
                                                        int h = Math.abs((result-g*100)/10);
                                                        if(!utilise.contains(h) && h != 0){
                                                            utilise.add(h);
                                                            int i = result-g*100-h*10;                                                    
                                                            if(!utilise.contains(i) && i != 0){
                                                                if(result < min){
                                                                    min = result;
                                                                    int abc = a*100+b*10+c;
                                                                    int def = d*100+e*10+f;
                                                                    System.out.println("min : " + min + "abc : " + abc + "def : " + def);
                                                                }}
                                                            utilise.remove(7);}
                                                        utilise.remove(6);}
                                                    utilise.remove(5);}}
                                            utilise.remove(4);}}
                                    utilise.remove(3);}}
                            utilise.remove(2);}}
                    utilise.remove(1);}}
            utilise.remove(0);}

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

C'est bien mieux :top:

 

Mais tu as sorti l'artillerie lourde quand même :red: 

Modifié par Cybero

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Les listes sont beaucoup plus simple à gérer en python apparemment :p 

len permet de savoir le nombre de valeurs différentes dans une liste/tableau si je comprend bien ? 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Python distingue les ensembles et les listes, mais la commande len s'applique aux deux... (len([1,2,1]) donne 3 alors que len({1,2,1}) donne 2 car {1,2,1}={1,2}

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...

Information importante

En utilisant ce site, vous acceptez notre Politique de confidentialité et nos Conditions d’utilisation
Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.