1 2 3 4 5 6 7 8 9 = 100 !

Description

Ce script montre comment associer les nombres 1 à 9 avec les 4 opérateurs usuels mathématiques (+,-,*,/) pour que le total fasse exactement 100 !
Pour trouver les 9 solutions possibles, ce script va tout simplement essayer toutes les combinaisons possibles comme il n'existe pas d'algorithme évident.

Source / Exemple :


<html> 
<head> 
<title>1 2 3 4 5 6 7 8 9 = 100 !</title> 
</head> 
<script language="JavaScript"> 
   
function go() 
{ 
    affichage = open("","","height=200,width=350"); // Pour l'ouverture de la popup 
    affichage.document.write("<font size=1 face=Verdana, Arial, Helvetica, sans-serif>"); 
    v = new Array(8); 
    op = new Array('+','-','*','/'); // On définit les 4 opérateurs 
    depart = new Date(); // On donne l'heure de départ du calcul 
    var nombre_de_solutions = 0; // On met les compteurs à zéro 
    var temps_total = 0; 
      
    // On essaye toutes les solutions possibles 
          
     for (v[0]=0; v[0]<4; v[0]++) 
      for (v[1]=0; v[1]<4; v[1]++) 
       for (v[2]=0; v[2]<4; v[2]++) 
        for (v[3]=0; v[3]<4; v[3]++) 
         for (v[4]=0; v[4]<4; v[4]++) 
          for (v[5]=0; v[5]<4; v[5]++) 
           for (v[6]=0; v[6]<4; v[6]++) 
            for (v[7]=0; v[7]<4; v[7]++) 
     { z = 1; 
         for (i=2; i<=9; i++) 
              
            // On essaye toutes les combinaisons avec les 4 opérateurs (+,-,*,/) 
              
         { switch (v[i-2]) 
         { 
              case 0 : z += i; 
                       break; 
              case 1 : z -= i; 
                       break; 
              case 2 : z *= i; 
                       break; 
              case 3 : z /= i; 
                       break; 
         } 
         } 
          
         // si on trouve bien 100, on écrit le résultat et le temps mis pour faire le calcul 
          
         if (z == 100) 
         { resultat = "" 
         for (j=0; j<=8; j++) 
         resultat += (j+1) + (j==8 ? " =" : op[v[j]]); 
         nombre_de_solutions++; 
         temps = temps_ecoule(depart); 
         temps_total += temps; 
         affichage.document.write(resultat + " " + z 
         +" " + edit(temps) + "<br>"); 
         depart = new Date(); 
         } 
         } 
         affichage.document.write("<p>On a trouvé " 
                        + nombre_de_solutions + " solutions en " 
                        + edit(temps_total) + " secondes </font>"); 
        } 
        // Calcul du temps mis pour faire le calcul (heure arrivée - heure départ cf: cours de 5éme ^^) 
        function temps_ecoule(depart) 
        { var temps = new Date(); 
         return Math.ceil((temps.getTime() - depart.getTime()) 
             /100); 
        } 
        function edit(dixiemes) 
        { a = Math.floor(dixiemes/10); 
        b = dixiemes % 10; 
        return a + "," + b; 
} 
</script> 
<body> 
<form> 
<input type="submit" value=" GO ! " onClick="go()"> 
</form> 
</body> 
</html>

Conclusion :


L'intéret ?!
Aucun ! Si ce n'est que de montrer la puissance de travail des différents navigateurs :
IE trouve les 9 solutions en 1 seconde en moyenne
Les navigateurs de type Gerko (netscape, firefox...) trouvent les solutions en 1.8 sec en moyenne.
Avec opéra, au bout d'un quart d'heure, la dernière ligne ne s'affiche toujours pas.

Les 9 solutions sont :

1+2+3+4+5*6-7+8+9 = 100
1+2*3+4+5*6-7+8-9 = 100
1-2/3+4*5*6+7-8-9 = 100
1*2+3*4-5*6-7+8+9 = 100
1*2+3*4*5+6-7-8+9 = 100
1*2+3*4*5-6+7+8-9 = 100
1*2-3+4*5*6-7+8+9 = 100
1*2*3+4+5*6-7+8+9 = 100
1/2+3*4*5+6+7+8+9 = 100

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.